我正在尝试让Codeigniter接受URL中的“@”符号。我把它作为下面允许的字符之一包括在内:
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_@-';
然而我继续得到他的错误信息:
Disallowed Key Characters.
除了“@”符号外,其他所有字符似乎都正常工作。有什么想法吗?
谢谢!
答案 0 :(得分:2)
CodeIgniter路由系统会将您的网址转换为将控制器,操作和参数定义为键/值。它检查密钥的值是否允许使用字符,并且您可以使用$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))
在你的情况下解决这个问题的唯一方法是在关键参数中避免使用这个字符(可能是翻译它)。
答案 1 :(得分:0)
您是否在允许的uri字符串中添加了正确的转义符?
$config['permitted_uri_chars'] = 'a-z 0-9~%\.\:_\-';
我从我的一个CI网站复制了此权限,并且允许使用%40。
请参阅pekka上面关于实际@符号的评论。