2012-04-11 73 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