- ベストアンサー
PEAR::Auth認証を使いたい
- 個人サイトでの認証にPEAR::Authを利用したい
- Basic認証の鬱陶しさやサーバの負荷を軽減したい
- DBを使わずにファイル管理でPEAR::Authを実装する方法を知りたい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Authを使用することが前提でしたので、 カスタムauthコンテナを作成し、このクラス内でbasic認証クラスで認証させています。 でも、basic認証クラスを直接使用したほうが楽かも? ○authtest.php <? require_once "Auth.php"; require_once "CustomAuthBasic.php"; function loginFunction($username = null, $status = null, &$auth = null) { /* * HTML出力は、作成するアプリケーションに合うように、 * 変更してください。 */ echo "<form method=\"post\" action=\"authtest.php\">"; echo "<input type=\"text\" name=\"username\">"; echo "<input type=\"password\" name=\"password\">"; echo "<input type=\"submit\">"; echo "</form>"; } $ab = new CustomAuthBasic("/home/hogehoge/basicpasswd"); $a = new Auth($ab, null, "loginFunction"); $a->start(); if ($a->checkAuth()) { echo "<pre>Auth OK</pre>"; } else{ echo "<pre>Auth NG</pre>"; } ?> ○CustomAuthBasic.php <? require_once "Auth/Container.php"; require_once "File/Passwd/Authbasic.php"; class CustomAuthBasic extends Auth_Container { var $_abasic = null; /** * コンストラクタ */ function CustomAuthBasic($params) { // 初期化をここで行います $this->_abasic = new File_Passwd_Authbasic($params); $this->_abasic->setMode("des"); } function fetchData($username, $password) { $this->_abasic->load(); $isvalid = $this->_abasic->verifyPasswd(username,password); // 有効かどうかを調べます if($isvalid) { // 何らかの処理をします return true; } return false; } } ?>
その他の回答 (1)
ANo.1です。 一部ミスがあったので修正。 CustomAuthBasic.phpのverifyの部分3行を 下記のように置き換えてください。 $isvalid = $this->_abasic->verifyPasswd($username,$password); // 有効かどうかを調べます if(!PEAR::isError($isvalid)) { 即席で作ったので、バグっているかも。 参考程度でお願いします
お礼
やり方だけでなく,ソースまで書いていただいて本当にありがとうございます。 今朝うっかりとPEAR環境を壊してしまい,pear.php.netも落ちていて,環境を復帰させられないので, pear.php.netが復活し次第 使わせていただこうと思っています。