Codeigniter 3 无法访问错误消息
Posted
技术标签:
【中文标题】Codeigniter 3 无法访问错误消息【英文标题】:Codeigniter 3 Unable to access an error message 【发布时间】:2015-04-18 14:00:50 【问题描述】:我在 Codeigniter 3 中使用 set_rules 函数存在问题
我检查用户电子邮件:
$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');
当我发布时收到此错误:
无法访问与您的字段名称电子邮件对应的错误消息。
【问题讨论】:
您是否更改了默认语言?您的输入名称是“电子邮件”吗? 这是我的输入名称“电子邮件”,不,我不更改默认语言 检查文件系统/语言/english/form_validation_lang.php是否存在 是的,但如果我删除这个 xss_clean 工作正常 您是否从 CI2 迁移了您的应用程序? 【参考方案1】:来自codeigniter github:
关于 XSS 清理的一个很大程度上未知的规则是它应该只 应用于输出,而不是输入数据。
我们自己在使用自动和全局 XSS 时犯了这个错误 清理功能(参见上面关于 XSS 的上一步),所以现在在 努力阻止这种做法,我们还删除了“xss_clean” 来自官方支持的表单验证规则列表。
由于表单验证库通常验证输入数据,因此 'xss_clean' 规则根本不属于它。
如果你真的、真的需要应用这条规则,你现在也应该 加载 Security Helper,其中包含 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');
【讨论】:
是的,$autoload['helper'] = array('security');工作正常,谢谢:) 使用 autoload.php 加载安全助手。最好使用这个助手来制作一个安全的应用程序。【参考方案2】: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;
【讨论】:
【参考方案3】:其他人已经提到它,但没有人简洁地说,修复此错误的方法是从您的验证规则中删除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');
【讨论】:
【参考方案4】:请在 autoload.php 上加载 security
Helper
$autoload['helper'] = array('security');
无需再做任何事情。
【讨论】:
【参考方案5】:全局覆盖规则将使用自定义消息扩展它:
$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email',
array('xss_clean' => 'Error Message: your xss is not clean.')
);
【讨论】:
你的回答有一点错别字:$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email', array('xss_clean' => 'Error Message: your xss is not clean.') );
@SebastianPalma 谢谢,已修复。【参考方案6】:
你应该使用。
$this->load->helper('security');
您也可以在 config/autoload.php 中使用以下代码,但我更喜欢使用上面的代码。因为,它保持了 Codeigniter 的轻量级。
$autoload['helper'] = array('security');
【讨论】:
以上是关于Codeigniter 3 无法访问错误消息的主要内容,如果未能解决你的问题,请参考以下文章
无法在Codeigniter中发送电子邮件,没有错误消息。本地或远程
无法访问 CodeIgniter 资产文件夹中的 CSS 文件,显示 404 错误