Codeigniter 3无法访问错误消息

时间:2015-02-17 18:48:32

标签: php forms validation codeigniter

我在Codeigniter 3中遇到了set_rules函数的问题

我检查用户电子邮件:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');

当我发帖时收到此错误:

无法访问与您的字段名称Email相对应的错误消息。

6 个答案:

答案 0 :(得分:56)

来自codeigniter github:

  

关于XSS清洁的一个很大程度上未知的规则是它应该只是   应用于输出,而不是输入数据。

     

我们自己用自动和全局XSS弄错了   清洁功能(参见上面关于XSS的上一步),所以现在在   努力阻止这种做法,我们也在删除'xss_clean'   来自官方支持的表单验证规则列表

     

因为表单验证库通常验证输入数据,所以   'xss_clean'规则根本不属于它。

     

如果你真的,真的需要应用这条规则,你现在也应该   加载安全帮助程序,其中包含xss_clean()作为常规函数,因此也可以用作验证规则。

链接:https://github.com/bcit-ci/CodeIgniter/blob/develop/user_guide_src/source/installation/upgrade_300.rst#step-13-check-for-usage-of-the-xss_clean-form-validation-rule

如果,尽管如此,你真的需要它,请转到application / config / autoload.php:

$autoload['helper'] = array('security');

或者,在表单验证之前

$this->load->helper('security');

答案 1 :(得分:12)

xss_clean不再是表单验证的一部分。

替代方法是不使用它,因为 xss_clean 正在进行清理而不是验证。   xss_clean 是安全帮助程序的一部分。如果您需要这样做,请在验证后完成。

 $this->load->helper('security'); `
 $value = $this->input->post('email',TRUE); //where TRUE enables the xss filtering

此外,您可以在config.php文件中启用全局xss过滤

  

$config['global_xss_filtering'] = TRUE;

答案 2 :(得分:5)

其他人已提到它,但没有人简洁地说过,修复此错误的方法是从验证规则中删除xxs_clean。我自己刚刚遇到过这个问题,并且由于这里提供的提示,能够解决这个问题。

此:

 $this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');

成为这个:

 $this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');

答案 3 :(得分:5)

请在autoload.php上加载security帮助

$autoload['helper'] = array('security');

无需再做任何事情。

答案 4 :(得分:0)

全局覆盖规则将使用自定义消息进行扩展:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email',
        array('xss_clean' => 'Error Message: your xss is not clean.')
);

答案 5 :(得分:0)

你应该使用。

$this->load->helper('security'); 

你也可以在config / autoload.php中使用下面的代码,但我更喜欢使用上面的代码。因为它保持了Codeigniter轻量级。

$autoload['helper'] = array('security');