Discuz多标签退出登录报错:一行代码解决XSS拦截问题

在使用Discuz论坛系统时,有一种场景容易触发报错:用户登录后在多个标签页中打开站点,在其中一个标签页退出登录后,再在其他标签页点击退出,系统会抛出异常报错。这种情况在日常浏览中并不少见,以下是该问题的具体表现与解决方案。

问题现象

账号登录后打开多个标签页,在其中一个页面执行退出登录操作,随后在其余已打开的页面中再次点击退出时,Discuz会触发报错提示,影响用户体验。

Discuz多标签退出登录报错截图

解决方案

打开网站根目录下的 member.php 文件,找到以下代码:

define('CURMODULE', $mod);

在该行代码下方加入以下内容即可修复:

if($mod == 'logging' && $_GET['action']=='logout') define('DISABLEXSSCHECK', true);

原理是在退出登录操作时临时禁用XSS安全检查,避免跨标签页请求因会话状态不一致而被Discuz安全机制拦截。修改后保存文件并刷新站点即可生效,多标签页退出登录不再报错。

发表评论

滚动至顶部