解决 CodeIgniter 框架应用中,出现Disallowed Key Characters错误提示的方法

原创 2016年05月30日 13:07:10
相信很多人遇到 Disallowed Key Characters 这样的问题,这个问题就出在 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 方法:

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



总结Codeigniter的一些优秀特性

总结Codeigniter的一些优秀特性 最近准备接手改进一个别人用Codeigniter写的项目,虽然之前也有用过CI,但是是完全按着自己的意思写的,没按CI的一些套路。用在公众的项目...
  • u011252402
  • u011252402
  • 2015年07月24日 08:21
  • 1721

SAX解析xml,characters方法遇到的问题

很久没有用过java SAX的原始解析方式了,今天yin
  • icefireforest
  • icefireforest
  • 2014年07月16日 19:43
  • 841

CodeIgniter框架入门教程——第三课 URL及ajax

本文转载自:http://www.softeng.cn/?p=74 这节课讲一下CI框架的路由规则,以及如何在CI框架下实现ajax功能。 首先,先介绍CI框架的路由规则,因为CI框架是在PHP的...
  • whh306318848
  • whh306318848
  • 2014年03月11日 22:15
  • 1483

PHP框架CodeIgniter入门使用(2)

本文参考 链接 介绍CodeIgniter如何将Controller连接Model层(操作数据库),实现读取新闻条目功能。通过本文串通Controller和Model以及View之间如何协同,控制。一...
  • yanzi1225627
  • yanzi1225627
  • 2015年10月23日 15:54
  • 2548

CodeIgniter框架源码笔记(1)——回忆:准备

看代码,一定要有全局观,先俯瞰了解整个架构思想,流程组成,体系组成, 如果想了解CI的使用,可以参考http://codeigniter.org.cn/user_guide/tutorial/inde...
  • soonfly
  • soonfly
  • 2016年07月07日 10:17
  • 621

WKWebView 使用和坑

开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载。这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难。如果加载网页多,还可能因为过量占...
  • u014600626
  • u014600626
  • 2016年11月09日 13:17
  • 4766

CodeIgniter框架源码笔记(9)——日志记录类Log.php

日志记录类Log结构: $_log_path:日志存放路径 $_file_permissions:写入的日志文件权限,默认为0644,即rw-r--r-- $_threshold:允许写日志的阀...
  • soonfly
  • soonfly
  • 2016年07月27日 20:23
  • 1083

CI框架百问百答:CodeIgniter的事务用法?--第9问

做为一名码工,没用过事务,那也不是好码工。 CodeIgniter的数据库抽象允许你在支持事务安全的数据库表中使用事务。在MySQL中,你需要用InnoDB或BDB表而不是更常用的MyISAM。大多...
  • haor2756
  • haor2756
  • 2013年06月06日 10:57
  • 2826

CI框架与Smarty模板整合

第一步,把下载到的smarty模板引擎解压,然后把里面的libs文件夹改名为smarty,然后把这个文件夹整体复制到application\libraries目录下面;第二步,在application...
  • churk2012
  • churk2012
  • 2016年02月19日 13:35
  • 622

【ci框架】精通CodeIgniter框架视频教程即将录制。。。

1、codeigniter框架的授课内容安排 2、codeigniter框架的简介 |-----关于框架的概念 |-----使用CI框架的好处 |-----为什么选择CI框架 3、cod...
  • yanhui_wei
  • yanhui_wei
  • 2013年05月04日 13:05
  • 14994
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决 CodeIgniter 框架应用中,出现Disallowed Key Characters错误提示的方法
举报原因:
原因补充:

(最多只允许输入30个字)