スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | | - | - | pookmark |
Entry: main  << >>
ログイン画面を作る
◆ログイン画面の作り方

・初めてのアクセスに対してログイン画面を表示
・アカウント情報を受け取って認証するスクリプト
・エラーメッセージの出力

これらはひとつのPHPスクリプトでまとめるのがスマート。

正しいアカウントとパスワードが入力され、ログイン認証が成功して初めて、他のPHPスクリプトに遷移するような作りにする。

◆ログイン画面 login.php の作成

ユーザがユーザ名を入力してログインボタンをクリックするとformタグのmethod属性がPOSTであるため、IDとパスワードはPOSTとしてPHPスクリプト側へ届く。同時にsubmitボタンの値もPOSTされる。つまり、この例では$_POST["login"]に"ログイン"という値が格納されている。
<?php
session_start();

// エラーメッセージを格納する変数を初期化
$error_message = "";

// ログインボタンが押されたかを判定
// 初めてのアクセスでは認証は行わずエラーメッセージは表示しないように
if (isset($_POST["login"])) {

// user_nameが「php」でpasswordが「password」だとログイン出来るようになっている
if ($_POST["user_name"] == "php" && $_POST["password"] == "password") {

// ログインが成功した証をセッションに保存
$_SESSION["user_name"] = $_POST["user_name"];

// 管理者専用画面へリダイレクト
$login_url = "http://{$_SERVER["HTTP_HOST"]}/php_10days/anq_result.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>

if ($_POST["login"])のように、変数の中身の存在チェックを行う際に変数自体が存在しない場合がある。この場合PHPではNOTICEエラーというのが出力されるが、この例では画面上にNOTICEエラーが出力されないようになっている。しかし、本来はisset関数を使って変数の存在をチェックすることが望ましい。

header関数はサーバからブラウザへHTTPヘッダ情報を送信する。第一引数にはヘッダ文字列を渡す。このとき「Location」という領域に記述されたURLを受け取ったブラウザは、受け取ったURLへのリダイレクト(再アクセス)を行う。
(この例ではanq_result.phpへリダイレクトされている)

*注意*
ブラウザの中にはLocationヘッダのリダイレクト先URLがフルパスで記述されていないとドメインを保管しないものがあるので気をつける。相対パスではなく、絶対パスでの記述を心がけること。

◆管理者専用画面 anq_result.php の作成
<?php
session_start();

// ログイン済みかどうかの変数チェックを行う
if (!isset($_SESSION["user_name"])) {

// 変数に値がセットされていない場合は不正な処理と判断し、ログイン画面へリダイレクトさせる
$no_login_url = "http://{$_SERVER["HTTP_HOST"]}/php_10days/login.php";
header("Location: {$no_login_url}");
exit;
} else {
print "ログイン成功";
}
?>

login.phpから送信されたIDとパスワードが一致すると管理画面anq_result.phpへリダイレクトされる。このログイン以降は、$_SESSIONの中身を判定して、正しくログインが行われたかの確認をし、正しい場合のみ管理者専用画面(ログイン後画面)を表示する。

すべての管理画面(ログインしないとアクセスできない画面)で毎回このログインチェックを行わないと、ブラウザのアドレス欄に直接ファイル名を入力するだけでこれらの画面にアクセスできてしまうので、ログイン画面を設けた意味がなくなってしまう。
| php | 13:09 | comments(1) | trackbacks(0) | pookmark |
スポンサーサイト
| スポンサードリンク | 13:09 | - | - | pookmark |
Comment
はじめまして。
ログイン画面を作る、セッションの概念を知る上でとても参考になりました。
今後も初心者にもわかりやすい記事を書いていってくださいね。
Posted by: TAKERU |at: 2011/05/27 6:07 PM








Trackback

Calendar

      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< April 2017 >>

Recommend

Recommend

Recommend

Profile

Search

Entry

Comment

Archives

Category

Link

Feed

Others

無料ブログ作成サービス JUGEM

Mobile

qrcode

Sponsored Links