用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8795|回复: 7
收起左侧

[HELP] The URI you submitted has disallowed characters.

[复制链接]
发表于 2010-4-15 00:00:31 | 显示全部楼层 |阅读模式
同样的代码,同样的数据库,我在服务器上使用没有任何问题。下载到本地后除了首页以外的其它页面,都会提示:The URI you submitted has disallowed characters.
但是我的URI确实没问题,像这样:http://localhost/arc/show/learn

哪位知道这是什么原因吗?
发表于 2010-4-15 00:36:39 | 显示全部楼层
有没有可能是你本地文件的编码问题?因为gbk和utf-8在很多情况下看起来并没有什么区别~~猜测而已,仅供参考
发表于 2010-4-15 10:26:47 | 显示全部楼层
明显是环境问题。
建议用 XAMPP。
 楼主| 发表于 2010-4-15 16:27:18 | 显示全部楼层
回复 3# Hex


   我用的就是xampp。看来我重装一下xampp算了。谢谢~~
 楼主| 发表于 2010-4-15 23:05:53 | 显示全部楼层
我无语啊,xampp完全 卸了重装还是不行。
发表于 2010-11-30 09:51:55 | 显示全部楼层
我也出现这种问题啊,郁闷中。。。
发表于 2011-7-13 00:43:51 | 显示全部楼层
本地跑的话,url参数中有中文放在ie中运行会有问题,lz试试google浏览器。
解决办法:urldecode($this->uri->segment ( × ))
发表于 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

本版积分规则