【问题标题】:"Disallowed Key Character" error in CodeIgniter? [duplicate]CodeIgniter 中出现“不允许的键字符”错误? [复制]
【发布时间】:2011-11-13 20:30:56
【问题描述】:

可能重复:
CodeIgniter Disallowed Key Characters

当我检查所有复选框(下面的代码)时,它给了我这个错误:

不允许的键字符

这是我的 HTML:

<label>Stability Control </label><input type="checkbox" class="largercheckbox"   name="checkBox[Stability-Control]"></input><br/>
<label>Xenon Headlamps</label><input type="checkbox" class="largercheckbox" name="checkBox[Xenon-Headlamps]"></input><br/>

这里有什么问题?我认为我的配置文件允许这些字符:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

【问题讨论】:

  • 我刚刚清除了我的 cookie,它起作用了!

标签: php codeigniter


【解决方案1】:

system/core/Input.php 中的以下函数禁止使用这些字符。

function _clean_input_keys($str) {
    if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) ...

这将允许 a-z A-Z 0-9 : _ \ / -

您应该通过在/application/core/ 中创建一个 MY_Input.php 文件来扩展 Input 类,然后重新创建该方法并添加您希望允许的任何字符。请参阅Creating Core System Classes 了解如何实现此目的的示例。

但是,您应该小心这一点,因为您可能会打开不必要的安全漏洞。你最好重写你的表单,让它通过现有的验证。

编辑:This article 通过扩展 Input 类描述了上述问题和解决方案。

经过搜索,以下帖子也演示了如何完成此操作以解决相同的问题

【讨论】:

  • 没有表单方法是post,我不这么认为
  • 抱歉,我误解了您提到的问题permitted_uri_chars,这导致我没有真正正确地阅读错误消息。这来自 Input 类而不是 config.php 文件
  • 好的,谢谢你告诉我这个,我知道我必须做什么
  • 我没有给你downvote,我放弃了upvote并选择你的答案作为接受的答案,再次感谢
  • 没问题很高兴我能帮上忙。我只是在问谁投了反对票,以便我可以在必要时改进我的答案。本
【解决方案2】:

好的,这是我的答案

你必须先到system/core/Input.php 并寻找一个名为

的函数
_clean_input_keys($str)

我不知道这里不允许使用的字符是什么,所以当您添加 $str 时,如下所示

if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
    {
        exit('Disallowed Key Characters.'.$str);  // HERE
    }

您将获得导致问题的确切字符 mine was ' ) ' 因此您必须执行以下操作之一从 html 中删除不允许的字符或允许它像 @Ben Swinburne 说的那样

希望对他人有所帮助

【讨论】:

    猜你喜欢
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    相关资源
    最近更新 更多