我正在使用Code Igniter 2,以下代码不会在用户输入相同电子邮件地址但不同情况下验证,例如:email@bob.com和Email@bob.com 我希望这可以验证它是否是相同的电子邮件,即使用户使用了不同的情况。
$this->form_validation->set_rules('password', 'Password', 'required|trim|xss_clean');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|trim');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('login_view', $data);
}
else
{
答案 0 :(得分:2)
任何接受一个参数的PHP函数都可以在验证类中使用。
任何接受一个参数的本机PHP函数都可以用作 规则,如htmlspecialchars,trim,MD5等。
这意味着您可以将验证规则修改为
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|strtolower|trim');
请注意在规则中使用strtolower()功能。
答案 1 :(得分:0)
您需要在控制器内创建一个回调函数:
function valid_case_insensitive_email($str){
$str = strtolower($str)
return $this->form_validation->valid_email($str)
}
然后将set_rules修改为此
$this->form_validation->set_rules('email', 'Email', 'required|callback_valid_case_insensitive_email|trim');
或者,您可以扩展form_validation类并覆盖valid_email
函数。
答案 2 :(得分:0)
这样做:
$this->form_validation->set_rules('email', 'Email', 'required|callback__check_email'); //then the callback function function _check_email() { $email = strtolower($this->input->post("email"); $email = trim($email); return $this->form_validation->valid_email($email); }
希望有所帮助