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

时间:2012-02-15 16:17:28

标签: php security codeigniter frameworks

我最近在我正在构建的自定义cms中遇到此错误 - 当我提交使用多选的表单时会出现此错误 - 任何人都可以提出此错误的最常见原因。

好的 - 我认为可能是导致问题的多选数组,例如我在表中有这样的数组..

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

$ _POST中不允许这样做吗?

4 个答案:

答案 0 :(得分:2)

如果你查看application / config文件夹中的config.php文件,你会发现这一行:

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

  

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

我添加|上面例子中的(管道)字符