可以直接使用form自己带的校验器 en 修正如下
-
public function loginAction ()
-
{
-
if ($this->auth->hasIdentity()) {
-
$this->_redirect('/account/');
-
}
-
$form = new UserForm();
-
if ($this->getRequest()->isPost()) {
-
if ($form->isValid($_POST)) {
-
$authadapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
-
$authadapter->setTableName('finaluser')->setIdentityColumn('name')->setCredentialColumn('password')->setCredentialTreatment('md5(?)');
-
$username = $this->_request->getPost('name');
-
$password = $this->_request->getPost('password');
-
$authadapter->setIdentity($username)->setCredential($password);
-
$result = $this->auth->authenticate($authadapter);
-
if ($result->isValid()) {
-
//将auth的身份写入session stdclass类
-
$identity = $authadapter->getResultRowObject(array('id' , 'name' , 'type'));
-
$this->auth->getStorage()->write($identity);
-
//重新跳转到请求login的页面
-
$this->_redirect($this->getRequest()->getServer('HTTP_REFERER'));
-
} else {
-
switch ($result->getCode()) {
-
case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
-
$form->getSubForm('subform1')->getElement('name')->addError('没有这个用户名!');
-
$this->view->form = $form;
-
break;
-
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
-
$form->getSubForm('subform1')->getElement('password')->addError('密码错误');
-
$this->view->form = $form;
-
break;
-
default:
-
$form->getSubForm('subform1')->getElement('name')->addError('登陆失败');
-
$this->view->form = $form;
-
break;
-
}
-
}
-
} else {
-
$this->view->form = $form;
-
}
-
} else {
-
$this->view->form = $form;
-
}
-
}
发表评论