"您当前访问请求中含有非法字符" 友好兼容解决方案
问题描述:由于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: https://".$_SERVER['HTTP_HOST']."/member.php?mod=logging&action=login");
exit;
}备注:https根据实际情况修改http
非常感谢! 修改后出现500错误,估计是https没修改 问题是,这提示不一定是没登录,可以考虑下是不是登录状态,其实你主要应该是为了搜索 我收到的主要反馈确实是 游客搜索时弹这个提示比较不人性化 所以才改这个
其他状态下 跳登录 如果已经登录 其实会只是触发非法关键字内容跳到登录状态提示~~ 就多一个提示
因为很多情况下 那个提示给用户 用户会无从入手下一步怎么弄 导致网站客服工作量增加 支持楼主分享! 这个解决方案应该Git上去! 学习一下 不错啊{:2_25:} 这是因为开启了主页游客缓存, 然后搜索表单的hash也会被缓存, 就会导致后面的游客hash与当前不一致,
正确的做法是跳转至search.php这个页面然后让他手动去搜索, search.php这个页面不会有缓存.
页:
[1]