Pear の中に Auth_HTTP というパッケージがあります。 このパッケージを利用することでベーシック認証を行うことができます。 Auth_HTTPは、Authクラスから派生しており、 ユーザーやパスワードの保存先(認証先)は、 非常に豊富で、ファイルやDB、認証サーバー等柔軟に対応できます。
Pearのパッケージをインストールします。 必要なパッケージは、 DB 等が必要になります。
pear install [パッケージ名]
MySQL を使った認証を次に示します。
<?php require_once "Auth/HTTP.php"; // Authオプション $params = array( 'dsn'=>"mysql://username:password@localhost/database", 'table'=>"usermng", // テーブル名 'usernamecol'=>"username", // ユーザ名の列名 'passwordcol'=>"password", // パスワードの列名 'cryptType'=>"md5", // パスワードの暗号化形式 'db_Fields'=>"*", // 他の項目の取得を可能にする ); $objAuth = new Auth_HTTP("DB", $params); // realm領域名 $objAuth->setRealm('Please Enter Your Password'); // 認証をキャンセルや認証エラーした際に表示されるメッセージ $objAuth->setCancelText('<h2>Error 401</h2>'); // 認証プロセスの開始 $objAuth->start(); if($objAuth->getAuth()) { echo "ようこそ!" . $objAuth->username . "さん<br>"; // メールアドレスを取得。 echo $objAuth->getAuthData('email'); }; ?>
ここでは、ユーザーの管理がDB( MySQL )で行われているものとしています。 そのため、Authクラスをインスタンス化する際のストレージドライバにDBを指定します。 ストレージドライバがDBの場合、次のオプションを指定することができます。
キー | 説明 | デフォルト値 |
---|---|---|
dsn | DBへの接続文字列 | '' |
table | 認証データが保持されるデータベースのテーブル名 | auth |
usernamecol | ユーザー名が保持される列名 | 'username' |
passwordcol | パスワードが保持される列名 | 'password' |
db_fields | 認証データが保持されるテーブルから他の項目も取得したいときに指定する列名 | '' |
cryptType | 暗号化形式 | 'md5' |
次にrealm領域名、認証をキャンセルや認証エラーした際に表示されるメッセージを設定します。
実際に、WWW-Authenticateを送っているのは、start()関数になります。 また、認証処理もこの関数内で行われているようです。
getAuthは、認証済みかどうかを取得する関数になります。
getAuthDataは、別の項目のデータを取得するときに使用します。
Copyright 1997-2010 BBB All rights reserved.