• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PEAR::Auth認証を使いたい)

PEAR::Auth認証を使いたい

このQ&Aのポイント
  • 個人サイトでの認証にPEAR::Authを利用したい
  • Basic認証の鬱陶しさやサーバの負荷を軽減したい
  • DBを使わずにファイル管理でPEAR::Authを実装する方法を知りたい

質問者が選んだベストアンサー

  • ベストアンサー
noname#246547
noname#246547
回答No.1

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)

noname#246547
noname#246547
回答No.2

ANo.1です。 一部ミスがあったので修正。 CustomAuthBasic.phpのverifyの部分3行を 下記のように置き換えてください。 $isvalid = $this->_abasic->verifyPasswd($username,$password); // 有効かどうかを調べます if(!PEAR::isError($isvalid)) { 即席で作ったので、バグっているかも。 参考程度でお願いします

Eilde
質問者

お礼

やり方だけでなく,ソースまで書いていただいて本当にありがとうございます。 今朝うっかりとPEAR環境を壊してしまい,pear.php.netも落ちていて,環境を復帰させられないので, pear.php.netが復活し次第 使わせていただこうと思っています。

関連するQ&A