PHPでlogin!
ログインの画面、ログイン後のページ、ログインしないと見れないページを作っていきます。
まず基本のHTML(index.php)と、エラーの時のメッセージ表示の命令です。これで、入力欄とログインボタンができます。
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<style>
body{
font-family: sans-serif;
}
</style>
<title>login page</title>
</head>
<body>
<?php
if($error_message) {
echo $error_message;
}
?>
<form action="index.php" method="POST">
<p>ログインID:<input type="text" name="user_name"></p>
<p>パスワード:<input type="password" name="password"></p>
<input type="submit" name="login" value="ログイン">
</form>
</body>
</html>
このコードの上に以下のコードを付け足します。idとパスワードを決めていきます。
<?php
session_start();
$error_message = "";
if(isset($_POST["login"])) {
if($_POST["user_name"] == "id" && $_POST["password"] == "pass") {
$_SESSION["user_name"] = $_POST["user_name"];
$login_success_url = "login_success.php";
header("Location: {$login_success_url}");
exit;
}
$error_message = "※ID、もしくはパスワードが間違っています。<br> もう一度入力して下さい。";
}
?>
全体です。
<?php
session_start();
$error_message = "";
if(isset($_POST["login"])) {
if($_POST["user_name"] == "id" && $_POST["password"] == "pass") {
$_SESSION["user_name"] = $_POST["user_name"];
$login_success_url = "login_success.php";
header("Location: {$login_success_url}");
exit;
}
$error_message = "※ID、もしくはパスワードが間違っています。<br> もう一度入力して下さい。";
}
?>
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<style>
body{
font-family: sans-serif;
}
</style>
<title>login page</title>
</head>
<body>
<?php
if($error_message) {
echo $error_message;
}
?>
<form action="index.php" method="POST">
<p>ログインID:<input type="text" name="user_name"></p>
<p>パスワード:<input type="password" name="password"></p>
<input type="submit" name="login" value="ログイン">
</form>
</body>
</html>
これでログイン画面出来上がり。今度は認証ですね。IDとパスワード入れてログインした後に表示されるページ(login_success.php)の作成です。このページはログインしないと見れない、直にアドレス叩いてもログインしていないと表示できないようにします。
<?php
session_start();
if(!isset($_SESSION["user_name"])) {
$no_login_url = "index.php";
header("Location: {$no_login_url}");
exit;
}
?>
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<style>
body{
font-family: sans-serif;
}
</style>
<title>login page</title>
</head>
<body>
<p>おめでとう!ログインに成功しました!</p>
</body>
</html>
<?php
session_start();
if(!isset($_SESSION["user_name"])) {
$no_login_url = "index.php";
header("Location: {$no_login_url}");
exit;
}
?>
の部分がミソです。もしログインしてなかったら、index.phpに戻る設定となっています。