打开ci框架的源码不难发现,在ci的核心input类中有这样一个函数:

用CI框架时,有时候会遇到这么一个问题,打开网页,只显示 Disallowed Key
Characters 错误提示。有人说 url 里有非法字符。但是确定 url
是纯英文的,问题还是出来了。但清空浏览器历史记录和cookies后。
刷新就没问题了。有时候。打开不同的浏览器。有的浏览器会有问题。有的就不会。

复制代码 代码如下:

解决 CodeIgniter 框架应用中,出现Disallowed Key
Characters错误提示的方法。找到/system/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);
        }

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;
}

        return $str;
}

改为:

这是进行过滤的,所以抛出错误

复制代码 代码如下:

我们在application的core中对这个方法进行重写即可
命名一个为MY_Input.php(前缀MY_可以在config.php中自定义),然后将下面代码加入即可

function _clean_input_keys($str)  
{  
    $config = &get_config(‘config’);  
    if ( !
preg_match(“/^[“.$config[‘permitted_uri_chars’].”]+$/i”,
rawurlencode($str)))  
    {  
        exit(‘Disallowed Key Characters.’);  
    }  

网站地图xml地图