我正在使用CodeIgniter,代码如下:
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<font color="red">', '</font>');
$this->load->helper('email');
$this->form_validation->set_rules('name', 'Member name', 'required|trim|max_length[31]');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|trim|max_length[50]');
$this->form_validation->set_rules('address', 'Mailing address', 'required|trim|max_length[41]');
# Additional fields here
if (!$this->form_validation->run()) {
# Go back to the form. This is not occuring.
}
else {
# This view is being loaded, but with an error on the page. Picture below.
$this->load->view('success_new', array('email' => set_value('email')));
}
提交表单时,如果出现错误,应该返回表单。我正在测试的电子邮件地址是david@lemcoe.com,这显然是有效的。为什么当我到达成功页面时,是否看到成功消息,以及“无效的电子邮件地址?”
我检查了视图,检查了控制器代码,所有内容,如果通过验证,它应该输出任何错误。此valid_email()
验证技术是否存在已知问题?如果是这样,RegEx在这种情况下使用的最佳电子邮件验证是什么。
这是success_new视图。在视图中没有任何地方可以回应任何错误。
答案 0 :(得分:1)
无法确定验证消息的来源。使用您发布的代码,没有validation_errors()
的迹象,即IIRC将本地化的错误消息输出到您的视图。自从我使用CI以来已经有好几年了。我真的需要看到完整的控制器方法和查看代码。
我要说的是我记得表单验证类中valid_email
规则的大问题。许多有效的电子邮件地址格式失败了,我记得常见的一种是本地用户部分中+
的电子邮件地址。我经常在我们的邮件服务器上看到大约50个字符的电子邮件地址,你要杀掉它们。
我建议您在自己的filter_var()方法中使用PHP的内置CI form validation callback函数... filter_var($email, FILTER_VALIDATE_EMAIL)