タグ別アーカイブ: ログイン

管理画面を作る①ログインシステム

データベースを更新するのに
いちいちphpMyadminを立ち上げて
データ入力して、としていると
めんどくさいものです。

そこでブラウザのページから
入力できるようにしてみたいと思います。

しかし、そこでひとつ問題が。

ブラウザからサーバにアクセスできる
ページを作ってしまうと
そのページから他人に勝手に
データをアップされたり
イタズラをされてしまう可能性ができます。

そこで、まず名前とパスワードでログインして
管理人だけがアクセスできるページをつくります。

ファイル名はlogin.phpです。

<?php
session_start();//①
$error_message = "";//②

if (isset($_POST["login"])) {
if ($_POST["user_name"] == "user" && $_POST["password"] == "password") {
$_SESSION["user_name"] = $_POST["user_name"];
//③
$login_url = "http://{$_SERVER["HTTP_HOST"]}/admin/index.php";
header("Location: {$login_url}");
exit;
}
//④
$error_message = "ユーザ名もしくはパスワードが違っています。";
}
?>

<html>
<head>
<title>ログイン画面</title>
</head>
<body>

<?php
if ($error_message) {
print '<font color="red">'.$error_message.'</font>';
}
?>
<form action="login.php" method="POST"><!--⑤--!>
ユーザ名:<input type="text" name="user_name" value="" /><br />
パスワード:<input type="password" name="password" value="" /><br />
<input type="submit" name="login" value="ログイン" />
</form>
</body>
</html>

①セッションとよばれるものを冒頭で設定します。
セッションはアクセスした人が初めて来るページかどうかを
見分けるために使われています。
クッキーとよく似ていますが、
クッキーがクライアント側に値が保存されるのに対し
セッションはサーバ側に保存されるので
他人がのぞき見ることができないので
セキュリティ上安全だといえます。

②エラーメッセージ変数を初期化します。

③ユーザ名とパスワードを照合します。
斜体字になっている部分にユーザ名とパスワードを
いれてください。

④ユーザ名とパスワードが合っている場合
管理人用の画面へリダイレクトします。
斜体字の部分に管理者画面のURLパスをいれてください。

⑤POST形式でフォームに入力された情報をlogin.phpに
おくります。フォームに入力されたものを送る形式には
GET形式もありますが、GETの場合URLとして送信されてしまうので
情報が表面上に出てこないPOST形式のほうが
ログイン画面にはふさわしいといえます。

<?php
session_start();
if (!isset($_SESSION["user_name"])) {
$no_login_url = "http://{$_SERVER["HTTP_HOST"]}/admin/login.php";
header("Location: {$no_login_url}");
exit;
} else {
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>管理画面</title>
</head>
<body>

<h1>CG今日の詩~管理画面</h1>
</body>
</html>

管理画面のindex.phpです。
ここでもセッションを確認し、ログインされていなければ
login.phpに跳ね返すようになっています。