2014-02-17 2 views
0

. Я становлюсь ниже ошибки во время работы. Код аутентификации пользователя включен. Я использую Zend Framework, & Zend Studio в качестве IDEЗначение для идентификации не было предоставлено до аутентификации с помощью Zend_Auth_Adapter_DbTable

значение для личности не было предоставлено до аутентификации с Zend_Auth_Adapter_DbTable.

Ниже код, который я написал:

public function authAction(){ 
     $request = $this->getRequest(); 
     $registry = Zend_Registry::getInstance(); 
     $auth  = Zend_Auth::getInstance(); 

     $DB = $registry['zenddb']; //zenddb is database name 

     $authAdapter = new Zend_Auth_Adapter_DbTable($DB); 
     $authAdapter->setTableName('user'); 



     $authAdapter->setIdentityColumn('user_name'); 
     $authAdapter->setCredentialColumn('password'); 

     // Set the input credential values 
     $uname = $request->getParam('user_name'); 
     $paswd = $request->getParam('password'); 
     $authAdapter->setIdentity($uname); 
     $authAdapter->setCredential(md5($paswd)); 

     // Perform the authentication query, saving the result 
     $result = $auth->authenticate($authAdapter); 

     if($result->isValid()){ 
      $data = $authAdapter->getResultRowObject(null,'password'); 
      $auth->getStorage()->write($data); 
      $this->_redirect('userpage'); 
     }else{ 
      $this->_redirect('login'); 
     } 
    } 

ответ

0

Эта ошибка обычно возникает, когда вы покидаете верительные поля пустыми в вашей форме,

так ZEND выпрямляет это с уловом блока, выдает ошибку, о которой вы говорили. Official Ticket

Вы можете решить это, поставив валидацию на поле, связанную с пустыми полями. // например. 'required' => true

надеюсь, что это поможет.

+0

Спасибо, но не было пустого поля учетных данных. –

+0

Вы добавили '' required '=> true' в свои поля в своей форме? –

+0

Получил желаемый результат. –

0
public function loginAction() 
    { 
     $this->_helper->layout->setLayout('loginlayout'); 

       $request = $this->getRequest(); 
       $form = new Application_Form_loginForm(); 
       $login=""; 

       if ($this->getRequest()->isPost()) { 
        if ($form->isValid($request->getPost())) { 
         $request = $this->getRequest(); 
         // Set the input credential values 
        $registry = Zend_Registry::getInstance(); 
       $auth  = Zend_Auth::getInstance(); 


       $params = array('host'  =>'localhost', 
         'username' =>'root', 
         'password' =>'', 
         'dbname' =>'zendDb' 
       ); 


       $DB = new Zend_Db_Adapter_Pdo_Mysql($params); 


       $authAdapter = new Zend_Auth_Adapter_DbTable($DB); 

       $authAdapter->setTableName('user'); 
       $authAdapter->setIdentityColumn('user_name'); 
       $authAdapter->setCredentialColumn('password'); 
       $request = $this->getRequest(); 
       // Set the input credential values 
       $uname = $request->getParam('user_name'); 

       $paswd = $request->getParam('password'); 

       $authAdapter->setIdentity($uname); 
       $authAdapter->setCredential(md5($paswd)); 

       $auth  = Zend_Auth::getInstance(); 
       // Perform the authentication query, saving the result 
       $result = $auth->authenticate($authAdapter); 

       if($result->isValid()){ 
        $data = $authAdapter->getResultRowObject(null,'password'); 

        $auth->getStorage()->write($data); 
        $login=""; 
        $this->_redirect('database/user'); 
       }else{ 

        $login="Invalid User Name or Password"; 

        //$this->_redirect('database/login'); 
       } 


       //return $this->_helper->redirector('auth'); 
      } 
      } 
      else { 
       $login=""; 
      } 

      $this->view->assign('title','Login'); 
      $this->view->assign('description',$login); 
      $this->view->form = $form; 

    } 
0
if ($this->getRequest()->isPost()) { 
    if ($form->isValid($request->getPost())){ 
     //Simply Wrap your Code between this two conditions. 
    } 
} 

Как вы можете увидеть здесь:

Сначала вы должны проверить, является ли запрос POST или нет.

Во-вторых, вы должны проверить, действительно ли это для вашей формы или нет.

+0

Пожалуйста, объясните, что не так с кодом OP и почему это решает проблему. –

+0

На самом деле я начинаю с Зенда. Я думаю, что если вы забудете проверить, является ли запрос почтовым или нормальным запросом, он создает проблему. –