認証に失敗し、getDbSelect() を実行しようとしても何も得られません...何が間違っていましたか?
クラス AuthController は Zend_Controller_Action を拡張します { 保護された $auth; パブリック関数 init() { $db = $this->getInvokeArg("bootstrap")->getResource("db"); $this->auth = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', 'md5(?)'); } パブリック関数 loginAction() { if (isset($_POST["ユーザー名"])) { $result = $this->auth ->setIdentity($this->getRequest()->getParam('username')) ->setCredential($this->getRequest()->getParam('password')); エコー " > " . $this->auth->getDbSelect();die(); $result = $this->auth ->setIdentity($this->getRequest()->getParam('username')) ->setCredential($this->getRequest()->getParam('password')) ->認証(); if ($result->isValid()) { $this->_redirect("postLogin"); } } }
更新 1:
私はMVCなしで、私がより精通しているMySQLでも試しました:
// 自動読み込みを設定する require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); // データベース接続をセットアップします $db = new Zend_Db_Adapter_Pdo_Mysql(array( 'ホスト' => '127.0.0.1', 'ユーザー名' => 'ルート', 'パスワード' => '', 'dbname' => 'learnZendAuth' )); // 認証アダプターを作成します $auth = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', 'md5(?)'); // リクエストが投稿されたらログインする if (isset($_POST) && !empty($_POST)) { // 認証を行う $result = $auth->setIdentity($_POST['username']) ->setCredential($_POST['password']) ->認証(); // 認証が有効であることを確認します if ($result->isValid()) { // ログイン成功 echo "ログインに成功しました: " . $result->getIdentity(); } そうしないと { // ログイン失敗 エコー ""; print_r($result->getMessages()); エコー ""; } } そうしないと { // リクエストは投稿されていません // すでにログインしているかどうかを確認する if (Zend_Auth::getInstance()->hasIdentity()) { echo "すでに次のユーザーとしてログインしています: " . Zend_Auth::getInstance()->getIdentity(); } }
私は得る
致命的なエラー: キャッチされない例外 'Zend_Auth_Adapter_Exception' とメッセージ 'Zend_Auth_Adapter_DbTable に指定されたパラメーターは、有効な sql ステートメントを生成できませんでした。有効なテーブル名と列名を確認してください。' C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Auth\Adapter\DbTable.php:414 スタック トレース: #0 C:\Program Files (x86)\Zend\ZendServer\share \ZendFramework\library\Zend\Auth\Adapter\DbTable.php(306): Zend_Auth_Adapter_DbTable->_authenticateQuerySelect(Object(Zend_Db_Select))
1 C:\Program Files (x86)\Zend\Apache2\htdocs\learnZf\index.php(23):
Zend_Auth_Adapter_DbTable->authenticate()
2 {main} が C:\Program Files (x86)\Zend\ZendServer\share\ZendFramework\library\Zend\Auth\Adapter\DbTable.php でスローされます
414行目