認証に失敗し、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行目