ユーザー認証
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.