Codeigniter(v2)中的不允许的关键字符错误消息


Disallowed key characters error message in Codeigniter (v2)

我最近在我正在构建的自定义cms中遇到了这个错误-当我提交使用多选的表单时会出现这个错误-有人能提出这个错误的最常见原因吗。

好的-我认为可能是多选数组造成了问题,例如我在一个表中有一个这样的数组。。

hotels[url][]
hotels[text][]
hotels[url][]

$_POST中是否不允许这样做?

如果您查看application/config文件夹中的config.php文件,您会发现以下行:

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

这是一个包含代码点火器允许的白名单字符的正则表达式。如果查询字符串中还有其他内容,您将得到该错误。

这可能是您使用GET而不是POST提交表单。多选通常使用数组表示法(myarray[]),这些字符通常是CodeIgniter在URL中不允许使用的。

如果你确定你在使用POST,那么我建议你检查两件事:

  1. 如果您正在使用CodeIgniter的CSRF保护,请确保您在表单中提交了一个有效的令牌。您可以通过禁用CSRF保护并尝试提交表单来测试这是否是问题所在。CSRF保护通常在config.php文件中通过$config['CSRF_protection']变量启用。有关CodeIgniter的CSRF保护的更多信息,请点击此处
  2. 仔细检查用于提交表单的URL,以确保它没有任何在application/config/config.php中的$config['permited_uri_characters']中不允许的字符

从输入名称中删除逗号。例如:名称['type']错误。它应该是name[type]

if(!preg_match("/^[a-z0-9:_/-]+$|/i",$str))

我在上面的示例中添加了|(管道)字符