zoukankan      html  css  js  c++  java
  • Disallowed Key Characters(转)

    CodeIgniter Disallowed Key Characters 怎么回事?

    相信很多人遇到 Disallowed Key Characters 这样的问题,即使是在访问 CSDN 的时候,因为 CSDN 的那部分网页是用 CI 写的,这个问题就出在 CI 的处理提交字符串的类上面。即使只是输入域名。没什么特殊字符,这问题还是如影随形,为什么呢?

        这和 CI 的字符串处理类设计有关,是这样的,通过get、post方法提交的字符串,CI 都交给 system/core/Input.php 这个类去处理,那很多人就问了,看url并没有特殊符号,为什么也报这样的错误,因为你忽略了一点,cookie 和 session 传输的字符串,也是由这个类统一处理的,也就是说,get、post、cookie、session 的数据都是由这个类处理的,问题往往也出现在 cookie 和 session 上面,所以网上有很多人提供方法就是,清除一下缓存和 cookie ,确实就没问题了,但是隔一段时间就又有问题了,因为新生成的 cookie 里面含有不被匹配通过的字符串,该怎么解决呢?

        解铃还需系铃人,既然问题出现在 Input.php 这个类上面,就修改他就好,把 _clean_input_keys 方法:

     
    1. function _clean_input_keys($str)
    2. {
    3.     if ( ! preg_match("/^[a-z0-9:_\/-]+$/i"$str))
    4.     {
    5.         exit('Disallowed Key Characters.');
    6.     }
    7.  
    8.     // Clean UTF-8 if supported
    9.     if (UTF8_ENABLED === TRUE)
    10.     {
    11.         $str = $this->uni->clean_string($str);
    12.     }
    13.  
    14.     return $str;
    15. }
     

        改为:

     
    1. function _clean_input_keys($str)
    2. {
    3.     /*if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
    4.     {
    5.         exit('Disallowed Key Characters.');
    6.     }*/
    7.     $config = &get_config('config');  
    8.     if (!emptyempty($config['permitted_uri_chars']))
    9.     {
    10.         if ( ! preg_match("/^[".$config['permitted_uri_chars']."]+$/i", rawurlencode($str)))   
    11.         {   
    12.             exit('Disallowed Key Characters.');   
    13.         }  
    14.     }
    15.  
    16.     // Clean UTF-8 if supported
    17.     if (UTF8_ENABLED === TRUE)
    18.     {
    19.         $str = $this->uni->clean_string($str);
    20.     }
    21.  
    22.     return $str;
    23. }
     

        然后把 config/config.php 里面的:

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

        改为:

     
    1. $config['permitted_uri_chars'] = '';
     

        即可

        自此问题解决,不懂的朋友可以理解一下上面这几段代码,希望有所帮助。

    问题来源:http://codeigniter.org.cn/forums/thread-3599-1-1.html

  • 相关阅读:
    lumen生成key
    github发布版本
    如何使用.gitignore文件删除掉已经提交的文件
    vue中计算属性和侦听属性
    Mac命令行指定特定程序打开文件
    MacOS中创建Sublime Text3快捷方式返回Operation not permitted的原因及解决
    Mac 下 visual studio code 编辑器 设置为中文
    Unix/Linux环境C编程入门教程(14) Mandriva LinuxCCPP开发环境搭建
    Unix/Linux环境C编程入门教程(13) 开发环境搭建VMware软件安装
    Unix/Linux环境C编程入门教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3013129.html
Copyright © 2011-2022 走看看