当我选中所有复选框(下面的代码)时,它会给我这个错误:
不允许使用关键字符
这是我的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~%.:_\-';
答案 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>
希望能帮助别人