【发布时间】:2014-03-14 12:41:33
【问题描述】:
我在 CodeIgniter 中有一个登录功能,代码如下:
public function login() {
$this->redirect_if_logged($this->login_check());
$this->data['active'] = 'login';
$this->load->model('user_model');
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback__validate_login');
if (!$this->form_validation->run()) {
$this->load->template('login', $this->data);
} else {
redirect('/','refresh');
}
}
还有一个验证函数:
public function _validate_login($password) {
$this->form_validation->set_message('_validate_login', 'Invalid username or password');
return false;
}
问题是自定义函数永远不会被调用,如果所有规则都通过,验证器总是返回 true。验证器本身可以工作,我用其他规则检查了它。它只是忽略了我的自定义功能。我在这里错过了什么?
【问题讨论】:
-
你在
_validate_login回调函数里面调试了吗,请试试echo $password; die; -
你的 _validate_login 函数在哪里?
-
我尝试在该函数中编写不同的东西,它总是运行 redirect() 行,就像它甚至没有检查该函数一样。如本例所示 - 我已将其设置为始终返回 false,因此不应通过。
-
这两个函数在同一个控制器中。
-
我认为
$this->redirect_if_logged($this->login_check());是重定向页面
标签: php codeigniter validation