Pear の中に Auth というパッケージがあります。 このパッケージを利用することでユーザー認証や認証用のフォームを作成することができます。 Authは、ストレージドライバを変えることで、認証管理をDBやファイル、POP3等さまざまな ユーザー管理に対応できます。
ユーザーの情報の保持をMySQLのテーブルで行った場合の処理です。
<?php require_once "Auth/Auth.php"; // Authオプション $params = array( 'dsn'=>"mysql://username:password@localhost/database", 'table'=>"usermng", // テーブル名 'usernamecol'=>"username", // ユーザ名の列名 'passwordcol'=>"password", // パスワードの列名 'cryptType'=>"md5", // パスワードの暗号化形式 ); $objAuth = new Auth("DB", $params); // ユーザーの追加 if($objAuth->addUser('user','pass')) { echo "ユーザーを追加しました。"; } ?>
ここでは、ユーザーの管理がDB( MySQL )で行われているものとしています。 そのため、Authクラスをインスタンス化する際のストレージドライバにDBを指定します。 ストレージドライバがDBの場合、次のオプションを指定することができます。
キー | 説明 | デフォルト値 |
---|---|---|
dsn | DBへの接続文字列 | '' |
table | 認証データが保持されるデータベースのテーブル名 | auth |
usernamecol | ユーザー名が保持される列名 | 'username' |
passwordcol | パスワードが保持される列名 | 'password' |
db_fields | 認証データが保持されるテーブルから他の項目も取得したいときに指定する列名 | '' |
cryptType | 暗号化形式 | 'md5' |
次にaddUser関数でユーザー名とパスワードを登録します。
実際に、WWW-Authenticateを送っているのは、start()関数になります。 また、認証処理もこの関数内で行われているようです。
getAuthは、認証済みかどうかを取得する関数になります。
他の項目に追加情報を登録したい場合、次のように連想配列で指定します。
$useropts = array('email'=>'hoge@hoge.com'); $objAuth->addUser('user','pass',$useropts);
Auth を使ったもっとも単純な認証処理を行います。
<?php require_once "Auth/Auth.php"; // Authオプション $params = array( 'dsn'=>"mysql://username:password@localhost/database", 'table'=>"usermng", // テーブル名 'usernamecol'=>"username", // ユーザ名の列名 'passwordcol'=>"password", // パスワードの列名 'cryptType'=>"md5", // パスワードの暗号化形式 'db_Fields'=>"*", // 他の項目の取得を可能にする ); $objAuth = new Auth("DB", $params); // 認証プロセスの開始 $objAuth->start(); if($objAuth->getAuth()) { echo "ようこそ!" . $objAuth->username . "さん<br>"; // メールアドレスを取得。 echo $objAuth->getAuthData('email'); }; ?>
インスタンス化するまでは、ユーザー登録と同様です。 ここでは、ユーザー管理テーブルからemail項目の値も取得するため db_Fieldsをオプションで指定しています。
start関数で、認証フォームの表示及び認証を行います。 フォームのname属性は、username,passwordの固定になります。
getAuthは、認証済みかどうかを取得する関数になります。
getAuthDataは、別の項目のデータを取得するときに使用します。
Copyright 1997-2010 BBB All rights reserved.