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

oso*_*sos 1 php codeigniter

可能重复:
CodeIgniter禁止关键字符

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

不允许的关键字符

这是我的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/>
Run Code Online (Sandbox Code Playgroud)

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

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
Run Code Online (Sandbox Code Playgroud)

Ben*_*rne 10

以下函数system/core/Input.php不允许使用字符.

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

这将允许az AZ 0-9:_\/ -

您应该通过在其中创建MY_Input.php文件来扩展Input类,/application/core/并重新创建该方法并添加您希望允许的任何字符.有关如何实现此目的的示例,请参阅创建核心系统类.

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

编辑:本文通过扩展Input类来描述上述问题和解决方案.

经过搜索,以下帖子还演示了如何解决同一问题


oso*_*sos 7

好的,这是我的答案

你必须先进入system/core/Input.php并寻找一个名为的函数

_clean_input_keys($str)
Run Code Online (Sandbox Code Playgroud)

我不知道这里不允许的字符是什么,所以当你像下面这样添加$ str时

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

你将得到完全导致问题的角色我的')'因此你必须做以下其中一项从html中删除不允许的角色或允许它像@Ben Swinburne所说

希望能帮到别人