|
发表于 2013-8-12 12:18:34
|
显示全部楼层
我的url里没有任何非法参数也会报这个错,下面的解决方法非常有用,
CodeIgniter的URL传过来的汉字参数中文参数有错误的处理。会显示The URI you submitted has disallowed characters.
一般网上的办法是替换_filter_uri函数,但是试过,不知道为什么CodeIgniter没重载这个函数。
那这样只能修改源代码了。看别人是用urlencode做的。感觉这样做,很别扭。
阅读了一下CodeIgniter的代码,发现它是用preg_quote把permitted_uri_chars做了预处理,然后再进行正则匹配。这有点自作聪明了,还不如直接就把这一下作为一个完整的正则语句来的方便。
既然要动原代码,那就改的彻底点!做如下修改:
config.php改为: $config['permitted_uri_chars'] = ‘|^[a-z 0-9~%\.\:_\+\- \x{4e00}-\x{9fa5}]+$|iu’;
URI.php改为: if ( ! preg_match($this->config->item(‘permitted_uri_chars’), $str))
转自:http://www.wintop.org/216/codeigniter%E7%9A%84url%E4%BC%A0%E8%BF%87%E6%9D%A5%E7%9A%84%E6%B1%89%E5%AD%97%E5%8F%82%E6%95%B0%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0%E5%A4%84%E7%90%86%E9%94%99%E8%AF%AF%E7%9A%84%E4%BF%AE%E5%A4%8D.html
|
|