博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeIgniter Disallowed Key Characters
阅读量:6242 次
发布时间:2019-06-22

本文共 1398 字,大约阅读时间需要 4 分钟。

hot3.png

相信很多人遇到 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 方法:

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

// Clean UTF-8 if supportedif (UTF8_ENABLED === TRUE){    $str = $this->uni->clean_string($str);}return $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.');
}
}

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

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

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

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

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

转载于:https://my.oschina.net/zhouyuan/blog/178220

你可能感兴趣的文章
什么是壳 - 脱壳篇01
查看>>
数据库基础
查看>>
python里面 循环明细对比 相同人员明细,生成同一订单里面
查看>>
linux top 命令的一些解释
查看>>
前端之HTML内容
查看>>
关于Datagridview控件用法的一些总结
查看>>
Mac 常用设置
查看>>
linux常用命令(22)gzip命令
查看>>
找出一个字符串中第一个只出现一次的字符
查看>>
CSS学习笔记(一)深入理解position属性和float属性
查看>>
xml入门
查看>>
python Flask框架mysql数据库配置
查看>>
[20150529]用户与用户组管理
查看>>
baidu__git_android
查看>>
ZC_源码编译真机烧写_20160424
查看>>
day26-UDP协议无粘包问题
查看>>
使用HTML5的十大原因
查看>>
转发:修饰符
查看>>
【转载】Linux下configure命令详细介绍
查看>>
图片中转站
查看>>