CodeIgniter中的“不允许的键字符”错误?

时间:2011-11-13 20:30:56

标签: php codeigniter

  

可能重复:
  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~%.:_\-';

2 个答案:

答案 0 :(得分:9)

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类来描述问题和解决方案。

经过搜索,以下帖子还展示了如何解决同样的问题

答案 1 :(得分:7)

好的,这是我的回答

您必须先进入system / core / Input.php并查找名为

的函数
_clean_input_keys($str)

我不知道这里禁止的角色是什么,所以当您添加 $ str 时,如下所示

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

你将得到导致问题的字符 mine is')'所以你必须做以下其中一项从html中删除不允许的字符或允许它像@Ben Swinburne所说< / p>

希望能帮助别人