Php codeigniter不允许关键字符-允许所有字符时

Php codeigniter不允许关键字符-允许所有字符时,php,codeigniter,Php,Codeigniter,可能重复: 我最近将CI从1.7升级到2.0。在我开始接受CI之后 不允许的关键字符 错误 然后,我允许接受所有字符,以查看错误是否会消失 $config['permitted_uri_chars'] = ''; 然而,这并没有改变任何事情 我还启用了查询字符串 $config['enable_query_strings'] = TRUE; 我只是不知道为什么当我允许所有字符都被接受时,会出现“不允许字符”错误 下面是一个url示例,我将在其中获得不允许的关键字符错误: http://lo

可能重复:

我最近将CI从1.7升级到2.0。在我开始接受CI之后

不允许的关键字符

错误

然后,我允许接受所有字符,以查看错误是否会消失

$config['permitted_uri_chars'] = '';
然而,这并没有改变任何事情

我还启用了查询字符串

$config['enable_query_strings'] = TRUE;
我只是不知道为什么当我允许所有字符都被接受时,会出现“不允许字符”错误

下面是一个url示例,我将在其中获得不允许的关键字符错误:

http://localhost/myapp/index.php??c=user&m=login
但是,如果我要删除其中一个“?”,它会起作用

http://localhost/myapp/index.php?c=user&m=login
我有一个htaccess文件,其中包含:

RewriteEngine on
RewriteRule (.*)/index.php $1/ [L]

有什么帮助吗?

正如代码注释中所述,您所做的是非常不鼓励的

| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
尽管如此,一个可行的解决方案是清除你的缓存,尤其是你的cookies,例如,你可以在CI论坛的主题中看到(在较小程度上,你可以在其他资源上搜索)

编辑:发布后,我看到你编辑了你的问题并添加了重要的细节。正如另一个用户所建议的,您需要检查输入类以破解codeigniter如何实现其自己的POST和GET处理


特别是,我正在查看library/input.php中的
函数\u clean\u input\u keys($str)
,并更改那里的正则表达式,正如代码注释中所述,您所做的是非常不鼓励的

| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
尽管如此,一个可行的解决方案是清除你的缓存,尤其是你的cookies,例如,你可以在CI论坛的主题中看到(在较小程度上,你可以在其他资源上搜索)

编辑:发布后,我看到你编辑了你的问题并添加了重要的细节。正如另一个用户所建议的,您需要检查输入类以破解codeigniter如何实现其自己的POST和GET处理


特别是,我正在查看library/input.php中的
函数\u clean\u input\u keys($str)
,并在那里更改Regex

看起来CodeIgniter对GET/POST/和cookie数据键名进行了单独的检查,并根据以下内容验证它们:

/^[a-z0-9:_\/-]+$/i
见:


除了编辑/子类化Input.php之外,我看不到一种简单的方法来禁用此检查。不过,使用没有奇怪符号的密钥可能会更好。

看起来CodeIgniter会单独检查GET/POST/和cookie数据密钥名称,并根据以下内容验证它们:

/^[a-z0-9:_\/-]+$/i
见:


除了编辑/子类化Input.php之外,我看不到一种简单的方法来禁用此检查。不过,您可能最好使用没有奇怪符号的键。

允许所有字符只是暂时的,因为我知道为什么仍然会出现此错误。当我使用CI 1.7时,我有允许的默认字符以及“?”,例如:
a-z 0-9~%:-?
,并且在接收不允许的关键字符消息时没有遇到任何问题。我会调查的。我想我可能得修改一下。我遇到的真正问题是如何处理facebook和它们的回调URL。允许所有字符只是暂时的,因为我知道为什么我仍然会遇到这个错误。当我使用CI 1.7时,我有允许的默认字符以及“?”,例如:
a-z 0-9~%:-?
,并且在接收不允许的关键字符消息时没有遇到任何问题。我会调查的。我想我可能得修改一下。我面临的真正问题是如何处理facebook及其回调URL。