您好我正在使用codeigniter表单验证。
在我的libraray中,我设置了表单验证
$this->ci->form_validation->set_rules ( 'businessemail', 'Business Email', 'required|xss_clean|min_length[6]|callback_valid_email_check' );
和我的valid_email_check
功能
public function valid_email_check($email_address)
{
if(!trim($email_address))
{
return TRUE;
}
$email_explode = explode("@", $email_address);
$valid = preg_match("/^(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._]+(?<![_.])$/",trim($email_explode[0]));
if(!$valid)
{
$this->ci->form_validation->set_message('valid_email_check', 'The %s field contains invalid charaters');
return FALSE;
}
else
{
return TRUE;
}
}
事情是
required|xss_clean|min_length[6]
正确验证,只有自定义验证消息无效。
我在这里做了什么,我认为使用CI
可能是问题,
如何解决这个问题,提前谢谢
答案 0 :(得分:1)
您说您正在库中设置验证规则。根据CodeIgniter的用户指南,这应该在controller中完成,或者您可以将它们保存在config file中。
这是为了什么目的? -
if(!trim($email_address))
{
return TRUE;
}
这个逻辑似乎对我有点倒退,例如 - 如果你将空字符串传递给函数,它将返回TRUE
。除非我忽略了这一点,否则不是你想要实现的目标。
您只需将trim
添加到$this->ci->form_validation->set_rules
参数中,然后将其从valid_email_check
功能中移除。
使用CI的valid_email
规则有什么问题?没有必要重新发明轮子,除非你有充分的理由。
这是一个可以接受的解决方案吗? -
$this->ci->form_validation->set_rules ('businessemail', 'Business Email', 'trim|required|xss_clean|min_length[6]|valid_email');
如果你扩展了form_validation
库,这就是你的功能所在,那么你就不需要在callback_
前加上它。
答案 1 :(得分:0)
您如何知道自定义验证无效?
以下是什么回报?
public function valid_email_check($email_address)
{
this->ci->form_validation->set_message('valid_email_check', 'The %s field contains invalid charaters');
return FALSE;
}
此外 - 您的valid_email_check位于何处?即它是什么文件?