PearのAuthは、ユーザー認証や認証用のフォームを作成することまでできますが、 独自の認証フォームを使用することもできます。 ここでは、Authの関数であるdrawLoginをオーバーライドして独自認証を行います。
<?php require_once "Smarty.class.php"; require_once "Auth/Auth.php"; class ExAuth extends Auth { var $_objSmarty; var $_tempSmarty; var $LOGIN_MESSAGE_VAR = "MSG"; //コンストラクタ function ExAuth( $storageDriver, //ストレージドライバ $objSmarty, //Smartyオブジェクト(省略可) $tempSmarty, //Smartyテンプレート名 $options = '', //PEAR:Auth用オプション $loginFunction = '', //PEAR:Auth用ログイン関数名 $showLogin = true) //ログインがオプションかどうか { //Smarty関連の設定 $this->objSmarty = $objSmarty; $this->tempSmarty = $tempSmarty; //基底クラスのコンストラクタを呼び出す $this->Auth($storageDriver, $options, $loginFunction, $showLogin); } //ログイン画面描写 function drawLogin($username = '') { $this->_objSmarty->assign($this->LOGIN_MESSAGE_VAR,"ステータス等によるメッセージ"); $this->_objSmarty->display($this->_tempSmarty); } } $objSmarty = new Smarty; $smarty->template_dir = 'テンプレートのパス'; $smarty->compile_dir = 'コンパイルのパス'; $smarty->config_dir = 'コンフィグのパス'; $smarty->cache_dir = 'キャッシュのパス'; $tmp = "login.tpl"; // Authオプション $params = array( 'dsn'=>"mysql://username:password@localhost/database", 'table'=>"usermng", // テーブル名 'usernamecol'=>"username", // ユーザ名の列名 'passwordcol'=>"password", // パスワードの列名 'cryptType'=>"md5", // パスワードの暗号化形式 'db_Fields'=>"*", // 他の項目の取得を可能にする ); $objAuth = new Auth("DB", $objSmarty, $tmp, $params); // 認証プロセスの開始 $objAuth->start(); if($objAuth->getAuth()) { echo "ようこそ!" . $objAuth->username . "さん<br>"; // メールアドレスを取得。 echo $objAuth->getAuthData('email'); } ?>
Authを継承して、フォームの出力部分であるdrawLoginをオーバーライドします。
コンストラクタには、Smartyのオブジェクトとテンプレートファイルを追加して渡すようにしています。 フォームのname属性は、usernameとpasswordの固定になりますので注意が必要です。
ログインの状態は、セッション情報に保持されます。 デフォルトでは、セッション内に_authsessionという配列を作成します。
Copyright 1997-2010 BBB All rights reserved.