用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3590|回复: 4
收起左侧

[讨论/交流] 我刚学CI碰到Disallowed Key Characters.能解决吗

[复制链接]
发表于 2011-11-22 01:09:55 | 显示全部楼层 |阅读模式
对CI产生了浓厚的兴趣,我把我的网站http://www.ledzixun.com原由DEDECMS二次开发的,为了学CI我的前台将会用CI来继续开发,我刚学CI就碰到Disallowed Key Characters.,看了CI中国的论坛发现很多人遇到这个问题,我想了解一下这个是不是CI的BUG是不是不能够彻底解决,如果真的是这样很影响我学习CI的决心。请各位老鸟回答
发表于 2011-11-22 22:45:25 | 显示全部楼层
唉……
这是CI的安全功能啊……
 楼主| 发表于 2011-11-23 00:33:24 | 显示全部楼层
acabin 发表于 2011-11-22 22:45
唉……
这是CI的安全功能啊……

问题是我并没有做什么操作,如果用户也这样那不造成不能正常访问了
发表于 2011-11-23 15:14:08 | 显示全部楼层
打开首页也试过这样。
这就是传说中的客户cookie有问题。
升级这么多版了,为什么还没有搞掉呢?
发表于 2012-5-17 15:37:28 | 显示全部楼层
如果你们相信我,试试这个方法:

用CI框架时,有时候会遇到这么一个问题,打开网页,只显示 Disallowed Key Characters 错误提示。有人说 url 里有非法字符。但是确定 url 是纯英文的,问题还是出来了。但清空浏览器历史记录和cookies后。 刷新就没问题了。有时候。打开不同的浏览器。有的浏览器会有问题。有的就不会。
解决 CodeIgniter 框架应用中,出现Disallowed Key Characters错误提示的方法。找到core文件夹下的Input文件,将下面的代码:
function _clean_input_keys($str)
{
    if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
    {
        exit('Disallowed Key Characters.');
    }

    // Clean UTF-8 if supported
    if (UTF8_ENABLED === TRUE)
    {
        $str = $this->uni->clean_string($str);
    }
    return $str;
}


改成这样:
function _clean_input_keys($str)  
{  
    $config = &get_config('config');  
    if ( ! preg_match("/^[".$config['permitted_uri_chars']."]+$/i", rawurlencode($str)))  
    {  
        exit('Disallowed Key Characters.');  
    }  
    // Clean UTF-8 if supported
    if (UTF8_ENABLED === TRUE)
    {
        $str = $this->uni->clean_string($str);
    }
    return $str;  
}



或者改成:
view sourceprint?
function _clean_input_keys($str)
{
    if(preg_match("/^,_[a-z0-9:_\/-]+$/",$str)){
        $str = preg_replace("/,_/","",$str);
    }
              
    if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
    {
        exit('Disallowed Key Characters.'.$str);
    }
    return $str;
}

  */

本版积分规则