ログイン画面を作ろうと思うと結構めんどくさかったりします。
ログイン画面のユーザーの参照ページを保持したり途中別のページが開かれたり
ややこしい認証だと共通モジュールに入れると全体が見づらくなったりと。。。
弊害を上げていったら切りがありませんが、ほとんどのブラウザはBesic認証に
対応しています。通常は「.htpassword」にパスワードが保存されていますが、
PHPでは「PHP_AUTH_USER」と「PHP_AUTH_PW」をつかってヘッダー内の
パラメーターを簡単に取得出来てしまいます。
ログイン画面に必要な機能はBesic認証でそろってますしこれを使わないては
無いですよね^^b
ってことでこんな感じで実装してみました。
<?php
$id = 'root';
$pw = 'pass';
// ユーザー認証
if(empty($_SESSION['IS_LOGIN'])){
// パラメーターの有無を確認、いやマージしておこう。
$auth = array_merge(
array('PHP_AUTH_USER','PHP_AUTH_PW'),
$_SERVER
);
if(
$auth['PHP_AUTH_USER'] $id &&
$auth['PHP_AUTH_PW'] $pw
){
// ログイン成功
$_SESSION['IS_LOGIN'] = 1;
/*
ここでセッションやクッキーにパラメーターを
記録しておいて次回表示に備える。
*/
}else{
// ログイン失敗
header('WWW-Authenticate: Basic realm="Wellcome"');
}
}else{
// すでにログインしている場合はスルー
}
echo 'Hello';
セキュリティー関連の問題が無いかがちょっと不安ではありますが、
お知らせや予定表等のみの簡単なCMSしか搭載していないサイトであれば
こっちのほうが簡単ですよね。
(完)
















