不允许“@";代码点火器URL中的符号


Not allowing "@" symbol in Codeigniter URL

我正在尝试让Codeigniter接受URL中的"@"符号。我把它作为下面允许的字符之一:

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

然而,我仍然收到他的错误信息:

Disallowed Key Characters.

除了"@"符号外,其他所有字符似乎都运行良好。有什么想法吗?

谢谢!

CodeIgniter路由系统转换您的url,将控制器、操作和参数定义为键/值。它检查密钥的值是否包含允许的字符,您可以使用$config['permitted_uri_chars']对此进行配置,但您得到的错误消息是关于密钥本身的,而不是关于其值的。在这种情况下,$config['permitted_uri_chars']不会帮助您允许使用@符号。您将在system/core/input.php中找到检查密钥的函数function _clean_input_keys($str)。不允许使用%字符,因此"%40"将不会通过:

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

在您的情况下,唯一的解决方法是避免在关键参数中使用这个字符(可能是翻译它)。

您是否为允许的uri字符串添加了正确的转义?

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

我从我的一个CI站点复制了此权限,并且允许%40。

请参考pekka在上面关于实际@符号的评论。