CodeIgniter Disallowed Key Characters

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

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

function clean_input_keys($str) { if ( ! preg_match("/^[a-z0-9:/-]+$/i", $str)) { exit('Disallowed Key Characters.'); }

1// Clean UTF-8 if supported 2if (UTF8_ENABLED === TRUE) 3{ 4 $str = $this->uni->clean_string($str); 5} 6 7return $str;

} 改为:

function clean_input_keys($str) { /*if ( ! preg_match("/^[a-z0-9:/-]+$/i", $str)) { exit('Disallowed Key Characters.'); }*/ $config = &get_config('config');
if (!emptyempty($config['permitted_uri_chars'])) { if ( ! preg_match("/^[".$config['permitted_uri_chars']."]+$/i", rawurlencode($str)))
{
exit('Disallowed Key Characters.');
}
}

1// Clean UTF-8 if supported 2if (UTF8_ENABLED === TRUE) 3{ 4 $str = $this->uni->clean_string($str); 5} 6 7return $str;

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

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

$config['permitted_uri_chars'] = ''; 即可

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

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

CodeIgniter Disallowed Key Characters - HelloWorld