【簡単コピペ】ログインシステムをPHPで作る

更新日:2017年4月9日

不特定多数の人に向けたコンテンツでなく、ID、パスワードを知っている限られた人にしか見せたくないコンテンツがあったとします。有料の会員制のホームページなんてのは大概そうですよね。
そうしたログインシステムの作り方を今回はご紹介。実はそう難しくないPHPの記述で実装可能なんです。

HTMLには下記の記述をして下さい。何気にPHPの記述を仕込みます。
<body>タグ内に記述して下さいね。ファイル名は今回の例ではindex.phpとしてます。

<?php
if($error_message) {
	echo $error_message;
}
?>

ログインID:

パスワード:

IDとパスワードの入力欄が作られ、ログインボタンが作られます。
よく目にしますよね。

次にPHPの記述になります。これも先程のindex.phpに記述して下さいね。
下記の記述は何処に記述しても構いませんが、例えばソースの一番上なんかに記述するのが一般的でしょう。

<?php
session_start();

$error_message = "";

if(isset($_POST["login"])) {

	if($_POST["user_name"] == "webtan" && $_POST["password"] == "webtan_pass") {
		$_SESSION["user_name"] = $_POST["user_name"];
		$login_success_url = "login_success.php";
		header("Location: {$login_success_url}");
		exit;
	}
$error_message = "※ID、もしくはパスワードが間違っています。
 もう一度入力して下さい。"; } ?>

これはなかなか意味が分からないと何がなんやらさっぱりな記述です。
順を追って説明していきましょう。

$error_message = "";
これはエラーメッセージを初期化する記述です。初めてサイトに訪れた人にはエラーメッセージを見せないようにします。当然ですよね。

if(isset($_POST["login"])) {
もしもログインボタンが押されたから…という記述。ログインボタンが押されたらそれ以降ソースが発動します。

if($_POST["user_name"] == "webtan" && $_POST["password"] == "webtan_pass") {
正解のIDとパスワードをここで指定しています。
今回の例の場合はIDが「webtan」でパスワードが「webtan_pass」だとログインに成功することが出来るようになっています。

$_SESSION["user_name"] = $_POST["user_name"];
ログインに成功した場合、IDをセッションに保存します。
セッションに保存することによって、今後ログインしている状態か否かの判断材料にします。

$login_success_url = "login_success.php";
header("Location: {$login_success_url}");
exit;
ログインに成功した場合、指定のページへ移動します。
今回の例の場合はlogin_success.phpに移動します。

$error_message = "※ID、もしくはパスワードが間違っています。
 もう一度入力して下さい。";
ログインに成功しなかった場合にエラーメッセージを表示します。

これでログインページの作成は完了しました。

次にログインが成功した場合に飛んでいく先のファイルの作成です。
今回の例の場合だとlogin_success.phpというファイル名とします。
ログインが成功した場合にどんなコンテンツがあるかということなので何でもいいので、
今回は「おめでとう!ログインに成功しました!」と表示させることにします。
HTMLで下記の記述となります

おめでとう!ログインに成功しました!

最後にログインページ以外のページには全て下記の記述をしましょう。
つまりindex.php以外の全てのページに入れるPHPの記述となります。 こちらも何処に記述しても構いません。

<?php
session_start();

if(!isset($_SESSION["user_name"])) {
	$no_login_url = "index.php";
	header("Location: {$no_login_url}");
	exit;
}
?>

何をしているかというと、ログインしているかどうかを確認しています。
ログインしていない場合はログインページへ強制的に移動します。

この記述はそのURLを知っていて、直接URLを入力して閲覧しようとした時に閲覧させないようにログインページへ移動させる為の記述になります。

これにて完成しました。
一見難しそうなログインシステムも紐解いてみれば思っていたより難しくなかったと思った方も多いはず!?
使い道はそれこそ山のようにある記述かと思います。
ご活用下さい!