我的身份验证失败,当我尝试 getDbSelect() 时,我什么也没得到……我做错了什么?
类 AuthController 扩展 Zend_Controller_Action { 受保护的 $auth; 公共函数初始化() { $db = $this->getInvokeArg("bootstrap")->getResource("db"); $this->auth = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', 'md5(?)'); } 公共函数 loginAction() { if (isset($_POST["username"])) { $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 = 新 Zend_Db_Adapter_Pdo_Mysql(array( '主机' => '127.0.0.1', '用户名' => 'root', '密码' => '', '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