HTTPサーバ認証
このコードを書いたページにアクセスしようとするとサーバが認証のためのポップアップ画面を表示する。ブラウザのポップアップを許可する必要がある。ユーザ名とパスワードを入力して認証する。いったん認証されるとブラウザを閉じるまで有効である。共有パソコンの場合は、最後にブラウザを閉じて認証をリセットしておく。サーバ管理者はcPanelのPassword Protect Directoriesでも設定できる。
<?php
$user_file = "./user";
if(!isset($_SERVER['PHP_AUTH_USER'])){
header("WWW-Authenticate: Basic realm=\"ユーザ名とパスワードを入力してください。\"");
header("HTTP/1.0 401 Unauthorized");
exit;
}else{
$id_pass = file($user_file);
$flag = 0;
for($i=0; $i<count($id_pass); $i++){
list($id,$pass) = split(",", $id_pass[$i]);
if($id == $_SERVER['PHP_AUTH_USER'] && $pass == $_SERVER['PHP_AUTH_PW']){
$flag++;
break;
}
}
}
?>
- 認証に使うユーザ名とパスワードは、コンマ( , )で区切って、userファイルに書く。
- 複数の組み合わせを設定できる。最後はかならず改行する。
- ユーザ名とパスワードが一致すると、$flagが1になるので、
if($p_flag > 0){~} と判定して~に認証後の処理を書く。 - Sample ユーザ名test パスワード1234を入力すると認証される。
FORMを使った認証
Formのname="action"を参照するとき、PHP4では$actionだったが、PHP5では$_POST['action']とする。$PHP_SELFも使えないので、$_SERVER['PHP_SELF']と書く。