EC studio EC studio 技術ブログ

2008年03月27日投稿者:山本 正喜

PHPでお手軽ベーシック認証 (Basic認証)

PHPで簡単にベーシック認証をかける関数を作成してみました。

.htaccessなどの設定をせずに、phpの関数として自由に認証をかけることができるので、簡易の管理画面などに使うととても便利です。

関数本体のコード:

  1. /**
  2. * ベーシック認証をかける
  3. *
  4. * @param array $auth_list ユーザー情報(複数ユーザー可) array("ユーザ名" => "パスワード") の形式
  5. * @param string $realm レルム文字列
  6. * @param string $failed_text 認証失敗時のエラーメッセージ
  7. */
  8. function basic_auth($auth_list,$realm="Restricted Area",$failed_text="認証に失敗しました"){
  9.     if (isset($_SERVER['PHP_AUTH_USER']) and isset($auth_list[$_SERVER['PHP_AUTH_USER']])){
  10.         if ($auth_list[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']){
  11.             return $_SERVER['PHP_AUTH_USER'];
  12.         }
  13.     }
  14.  
  15.     header('WWW-Authenticate: Basic realm="'.$realm.'"');
  16.     header('HTTP/1.0 401 Unauthorized');
  17.     header('Content-type: text/html; charset='.mb_internal_encoding());
  18.  
  19.     die($failed_text);
  20. }

使い方は、この関数を読み込んでから認証をかけたいタイミングで

  1. //ベーシック認証をかける
  2. basic_auth(array("masaki" => "password"));
  3.  
  4. echo "認証を通過しました!";

とするだけでOKです。
(文字化けする方はmb_internal_encodingの設定を確認してください)

引数には、array("ユーザー名" => "パスワード"); の形式で
認証可能なユーザー情報を渡してください。

↓こんな感じで複数ユーザーも可能です。

  1. basic_auth(array(
  2.             "masaki" => "password1",
  3.             "ono" => "password2",
  4.             "kawamura" => "password3"
  5.             ));
  6. echo "認証を通過しました!";

ユーザー情報はただの連想配列なので、キーを追加するだけでユーザーを追加することができます。(便利!)

ご活用ください ;)

※ダイジェスト認証の関数を作成してみました
記事:PHPでお手軽ダイジェスト認証


関連した記事:
投稿者
人気のエントリー
カテゴリー
最近のエントリー
アーカイブ
Copyright© ChatWork, All Rights Reserved. secured by ESET.