加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

CodeIgniter提示Disallowed Key Characterss的解决方法

发布时间:2020-05-25 22:38:36 所属栏目:PHP 来源:互联网
导读:相信很多人在使用CodeIgniter框架时提示Disallowed Key Characterss错误,本文章向大家介绍如何解决CodeIgniter Disallowed Key Characterss,需要的朋友可以参考一下

相信很多人遇到 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 这个类上面,就修改他好了。

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

}

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;

}

或者改成:

function _clean_input_keys($str)

{

if(preg_match("/^,_[a-z0-9:_/-]+$/",$str)){

$str = preg_replace("/,_/","",$str);

}

if ( ! preg_match("/^[a-z0-9:_/-]+$/i",$str))

{

exit('Disallowed Key Characters.'.$str);

}

return $str;

}

大概就这样~留个记录。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读