ユーザー認証
http 認証の方法
会員制の掲示板などのように、限られた人だけに見せたい場合、 パスワードなどでユーザー認証(アクセス制限)することになります。 ユーザー認証の方法にはいくつかありますが、 ここでは、PHP から呼び出すことができる http 認証について解説します。
http 認証とは
http 認証とは、httpステータスコード401 を利用する認証方法です。 ステータスコード401 は、 未認証の場合に下の図のような認証画面を表示させます。
ユーザー名とパスワードが一致すると、ページが表示されます。 もちろん一致しなければページは表示されず、 認証エラーと表示されます。
http 認証するには
http 認証をするには、以下のように記述します。 ここで注意ですが、 必ず、<html> タグよりも前に、この命令を記述しておきましょう。 そうしないと、認証しなくても、html 本体が表示されてしまいます。
define("USER","tanaka"); ユーザー名の設定
define("PASS","4Plix9dl"); パスワードの設定
if (!isset($PHP_AUTH_USER)) {
// 中身が空なら、ダイアログボックスを表示させるヘッダーを送る。
header('WWW-Authenticate: Basic realm="Authentication"');
header('HTTP/1.0 401 Unauthorized');
echo 'ユーザーの認証が必要です。';
exit;
} else if (isset($PHP_AUTH_USER)) {
if ((USER != "$PHP_AUTH_USER") || (PASS != "$PHP_AUTH_PW")) {
header('WWW-Authenticate: Basic realm="Authentication"');
header('HTTP/1.0 401 Unauthorized');
echo 'ユーザーの認証が必要です。';
exit;
}
}
USER と PASS の部分は、 あらかじめ定数として定義しておきます。 複数のユーザーがいる場合は、配列にユーザー名とパスワードを格納しておき、 認証を行って下さい。
$data_user = array("Alice","Bob","Chris");
$data_pass = array("kiU9jdf3","PljS34As","W8ej9Amv");
$authentication = 0;
for(i=0;i<3;i++) { // ユーザーが3人なので i<3
if (($data_user[$i] == "$PHP_AUTH_USER") || ($data_pass[$i] == "$PHP_AUTH_PW")) {
$authentication = 1;
}
}
if ($authencitation = 0) {
header('WWW-Authenticate: Basic realm="Authentication"');
header('HTTP/1.0 401 Unauthorized');
echo 'ユーザーの認証が必要です。';
exit;
}
また、realm="Authentication" の部分は、 Authentication と画面上に表示されるようにしています。 Authentication を別の文字列に変更することもできます。
※今回紹介したスクリプトは、 PHPがApacheモジュールとして実行される場合にのみ有効です。 サーバの設定によっては利用できないことがあります。
Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.