CodeIgniter valid_email()函数无法正常工作

时间:2014-10-21 15:55:18

标签: php codeigniter

我正在使用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视图。在视图中没有任何地方可以回应任何错误。

enter image description here

1 个答案:

答案 0 :(得分:1)

无法确定验证消息的来源。使用您发布的代码,没有validation_errors()的迹象,即IIRC将本地化的错误消息输出到您的视图。自从我使用CI以来已经有好几年了。我真的需要看到完整的控制器方法和查看代码。

我要说的是我记得表单验证类中valid_email规则的大问题。许多有效的电子邮件地址格式失败了,我记得常见的一种是本地用户部分中+的电子邮件地址。我经常在我们的邮件服务器上看到大约50个字符的电子邮件地址,你要杀掉它们。

我建议您在自己的filter_var()方法中使用PHP的内置CI form validation callback函数... filter_var($email, FILTER_VALIDATE_EMAIL)