您当前的位置:主页 > 教程合集 > 网站建设网站首页网站建设

Discuz!论坛用户退出登陆报错Discuz! System Error的解决办法

发布时间:2016-09-01编辑:余斗阅读:(0)字号:
    最近在使用论坛的时候,余斗发现一个问题,每次退出登陆再刷新的时候系统就会报错,如下图这样: Discuz!论坛用户退出登陆报错Discuz! System Error的解决办法 查询了一下官方论坛,给出的解释是DZ系统3.2x的bug,并且官方也给出解决办法,是下载源文件并覆盖,余斗实验了一下并未成功,折腾好久,余斗找到解决办法: 打开文件\source\class\discuz\discuz_application.php,查找代码(大概在第350行):

    private function _xss_check() {

            static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING');

            if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) {
                system_error('request_tainting');
            }

            if($_SERVER['REQUEST_METHOD'] == 'GET' ) {
                $temp = $_SERVER['REQUEST_URI'];
            } elseif(empty ($_GET['formhash'])) {
                $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input');
            } else {
                $temp = '';
            }

            if(!empty($temp)) {
                $temp = strtoupper(urldecode(urldecode($temp)));
                foreach ($check as $str) {
                    if(strpos($temp, $str) !== false) {
                        system_error('request_tainting');
                    }
                }
            }

            return true;
        }
     
    修改为:

    private function _xss_check() {
               $temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
               if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false)
                      {
                             system_error('request_tainting');
                       }
                  return true;
    }
     
    把修改好的文件上传覆盖,再刷新下后台系统缓存,会发现不会再有这个报错的Bug了!
关键字词Discuz论坛
余斗余斗
  1. 转载请注明:Discuz!论坛用户退出登陆报错Discuz! System Error的解决办法
  2. 版权声明:本站原创文章,由发表在网站建设分类下,于2016-09-01最后更新
利用.htaccess实现首页index.html重写与栏目页
Discuz!论坛伪静态的实现方法
手机扫一扫 随身带着看
鸿运国际手机登录首页