错误描述:Discuz3.2在未登录时(游客)搜索提示如下错误:“您当前的访问请求当中含有非法字符,已经被系统拒绝”,当管理员在后台更新缓存后游客再次搜索则正常出现搜索内容,但过一段时间后游客如果搜索又会出现如上错误。
提示信息:PHP:search.php:0022 -> source/class/discuz/discuz_application.php:0071 -> source/class/discuz/discuz_application.php:0552 -> source/class/discuz/discuz_application.php:0355 -> source/function/function_core.php:0023 -> source/class/discuz/discuz_error.php:0024
产生原因:由于Discuz!X 的Xss安全机制,会对游客访问时进行字符内容安全检查,特别是游客使用搜索功能时,搜索容易出现 "您当前访问请求中含有非法字符,已经被系统拒绝" 。
解决办法:将错误提示直接跳转用户登录页面。
打开:/source/class/discuz/discuz_application.php
搜索下面代码:- if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
- system_error('request_tainting');
- }
复制代码 替换为:- if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
- //system_error('request_tainting');
- //header('HTTP/1.1 301 Moved Permanently');
- header("Location: http://".$_SERVER['HTTP_HOST']."/member.php?mod=logging&action=login");
- exit;
- }
复制代码 如果网站部署了SSL,将上述代码中的http修改为https即可。 |