Discuz! X3.* 的广播收听权限默认赋予给所有用户,且后台不可设置取消。现在发现有人恶意创建用户名和个人介绍中包含网址等推介信息的帐号,使用工具根据UID大批量逐一收听全站用户,从而致使用户受到广告信息的骚扰。我们可以通过以下几步取消新用户默认用户组的广播收听权限,并清除已经产生的垃圾收听记录。
第一步,从后台程序中禁止某些用户组的用户收听他人。
打开 source/include/spacecp/spacecp_follow.php 文件,查找:
$special = intval($_GET['special']) ? intval($_GET['special']) : 0;
在其上方加入:
if(in_array($_G['groupid'], array(4,8,其它新人组禁言组编号))) {
showmessage('非正式用户或受限用户无权收听任何人。');
}
第二步,针对指定用户组取消前台广播页面上的“收听”按钮。
打开当前模板目录下 home/follow_user_header.htm 文件,
查找
<div class="mtm o cl">
在其下方加入:
<!--{if in_array($_G['groupid'], array(新人组编号1,新人组编号2))}-->
<div id="followflag" style="color:red;">您需要提升等级或开通VIP会员后才能收听他</div>
<!--{elseif in_array($_G['groupid'], array(4,8,其它禁言组编号))}-->
<div id="followflag" style="color:red;">您当前处于受限状态,无法进行收听操作</div>
<!--{else}-->
然后在倒数第三行前面加入一行:
<!--{/if}-->
第三步,针对指定用户组取消前台“听众”“收听”页面中列表右侧的收听按钮。
打开当前模板目录下 home/follow_feed.htm 文件,
查找
<!--{if $fuser['mutual']}-->
共两处,替换为
<!--{elseif $fuser['mutual']}-->
并在前面加入:
<!--{if in_array($_G['groupid'], array(4,8,其它新人组禁言组编号))}-->
<span style="color:#999999;font-style:italic;margin-right:50px;float:right;">您暂时无权收听他</span>
第四步,清除已经产生的恶意收听记录。
首先,您可以锁定该恶意用户的帐号,但哪怕是将该用户彻底删除,他的收听记录仍然存在,被收听的用户登录后,仍然可以看到他的用户名。怎样清除这些恶意收听记录呢?
请使用 phpMyAdmin 等MySQL数据库管理工具登录到论坛数据库,执行以下SQL语句:
delete from pre_home_follow where uid='恶意用户的UID';