2012-04-11 77 views
0

我是zend的新手。我正在尝试使用zend框架创建登录表单。但它的创造问题。下面是我的功能无法使用zend框架登录

public function loginAction() 
{ 
    $db = $this->_getParam('db'); 
    $form = new Application_Form_Login(); 
    $this->view->form = $form; 

    if($this->getRequest()->isPost()) 
    { 
     $formData = $this->getRequest()->getPost(); 
     if ($form->isValid($formData)) 
     { 
     $adapter = new Zend_Auth_Adapter_DbTable(
      $db, 
      'users', 
      'emailaddress', 
      'password', 
      'MD5(CONCAT(?, password_salt))' 
      ); 

     $adapter->setIdentity($form->getValue('email')); 
     $adapter->setCredential($form->getValue('password')); 

     $auth = Zend_Auth::getInstance(); 
     $result = $auth->authenticate($adapter); 

      if ($result->isValid()) { 
       $this->_helper->FlashMessenger('Successful Login'); 
       $this->_redirect('/'); 
       return; 
      } 
     } 
    } 
} 

它给出错误在下面的行 - > $结果= $ auth-> authenticate($适配器);

错误是 - >消息:提供给Zend_Auth_Adapter_DbTable的参数未能生成有效的sql语句,请检查表和列名的有效性。

我的表名是'users',它有列(id,firstname,lastname,age,emailaddress,password)。

回答

0

您需要命名在表 'password_salt' 将含有盐或者只是改变这个

'MD5(CONCAT(?, password_salt))' 

'MD5(?)' 
+0

由昌代码做“MD5(场CONCAT(?password_salt) )' 至 'MD5(CONCAT(?))'thanks sas – Navdeep 2012-04-11 08:58:07

+0

hello sas,正如您所说的'password_salt'字段将包含salt。你能解释一下吗(盐?) – Navdeep 2012-04-11 09:00:26

+1

一切都已经被告知 - http://stackoverflow.com/questions/674904/salting-your-password-best-practices。你也应该使用SHA1而不是MD5(它更安全)。如果它对你有帮助,请接受我的答案。 – sas 2012-04-11 09:05:54