如何验证用户提供的电子邮件,并且必须在数据库表字段电子邮件中进行检查。。那么我该怎么做呢?回叫功能不起作用,有什么建议吗?
我已经这样做了,但没有工作:
$this->form_validation->set_rules('email','Email','trim|required|xss_clean|valid_email|matches[mod_register.email]');
这里mod_register
是表名,电子邮件是字段。
只匹配另一个表单字段而不是数据库字段的检查,请参阅:http://www.codeigniter.com/user_guide/libraries/form_validation.html#rule-参考
您可以使用回电:
$this->form_validation->set_rules('email','Email','trim|required|xss_clean|valid_email|callback_check_email');
然后在您的控制器中,添加以下功能:
/**
* validation function for checking email exists in database
* @param string $email
* @return bool
*/
public function check_email($email = NULL) {
// if no email specified, skip
if (empty($email)) {
return TRUE;
}
// build query to check if email exists in database
$where = array(
'email' => $email
);
// run query
$query = $this->db->get_where('mod_register', $where, 1);
// check results
if ($query->num_rows() == 1) {
// matches
return TRUE;
}
// no matches
return FALSE;
}
请参阅:http://www.codeigniter.com/user_guide/libraries/form_validation.html#callbacks-您自己的验证方法