ユーザー認証

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;

     }
 }

USERPASS の部分は、 あらかじめ定数として定義しておきます。 複数のユーザーがいる場合は、配列にユーザー名とパスワードを格納しておき、 認証を行って下さい。

  $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-2013. PHP で WEB 作成 All rights reserved.