discuz!论坛解决站帮网vip插件bug:VIP会员到期后还是在vip用户组,没有自动切换到默认用户组

先说一下遇到的问题:

使用discuz!论坛有一段时间了,论坛添加了VIP会员的功能,使用的是站帮网的Vip插件。今天才留意到一个问题,就是我自己的账号原本只开通了一个月的会员,至少也用了半年,怎么到现在还是VIP会员呢?到用户组一看,还是在自定义的VIP会员组里,也就是说站帮网的VIP插件可能有漏洞,然后就去百度,发现确实存在这个bug,VIP会员到期后不自动切换到默认用户组。站帮网官方最开始提出的解决方案是在【VIP会员管理】里把过期的会员清理掉,但这个方法并不完美,而且很麻烦,于是使用了某位大神的方案,最终完美解决。

解决方法:

1、打开文件:source/include/spacecp/spacecp_usergroup.php
找到代码:

$groupexpirynew = $groupterms['ext'][$groupid];

替换成:

//$groupexpirynew = $groupterms['ext'][$groupid];
/*---使用下面这行代码替换上面的那句代码,可以解决站帮网vip插件会员到期没有自动切换用户组问题----*/
$groupexpirynew = $groupterms['ext'][$extgroupidsnew];

2、还是spacecp_usergroup.php这个文件,找到下面这行代码:

$expirylist[$group['groupid']]['grouptitle'] = $isexp ? '<s>'.$group['grouptitle'].'</s>' : $group['grouptitle'];

在它的下面加上如下代码:

/*---- 新增代码 start,解决站帮网vip插件会员过期,没有自动切换用户组问题 ---*/
if ($expgrouparray) {
    $extgroupidarray = array();
    foreach (explode("\t", $_G['forum_extgroupids']) as $extgroupid) {
        if (($extgroupid = intval($extgroupid)) && !in_array($extgroupid, $expgrouparray)) {
            $extgroupidarray[] = $extgroupid;
        }
    }
    $groupidnew = $_G['groupid'];
    $adminidnew = $_G['adminid'];
    foreach ($expgrouparray as $expgroupid) {
        if ($expgroupid == $_G['groupid']) {
            if (!empty($groupterms['main']['groupid'])) {
                $groupidnew = $groupterms['main']['groupid'];
                $adminidnew = $groupterms['main']['adminid'];
            } else {
                $groupidnew = DB::result_first("SELECT groupid FROM " . DB::table('common_usergroup') . " WHERE type='member' AND '" . $_G['member']['credits'] . "'>=creditshigher AND '$credits'<creditslower LIMIT 1");
                if (in_array($_G['adminid'], array(1, 2, 3))) {
                    $query = DB::query("SELECT groupid FROM " . DB::table('common_usergroup') . " WHERE groupid IN (" . dimplode($extgroupidarray) . ") AND radminid='$_G[adminid]' LIMIT 1");
                    $adminidnew = (DB::num_rows($query)) ? $_G['adminid'] : 0;
                } else {
                    $adminidnew = 0;
                }
            }
            unset($groupterms['main']);
        }
        unset($groupterms['ext'][$expgroupid]);
    }
    require_once libfile('function/forum');
    $groupexpirynew = groupexpiry($groupterms);
    $extgroupidsnew = implode("\t", $extgroupidarray);
    $grouptermsnew = addslashes(serialize($groupterms));

    DB::query("UPDATE " . DB::table('common_member') . " SET adminid='$adminidnew', groupid='$groupidnew', extgroupids='$extgroupidsnew', groupexpiry='$groupexpirynew' WHERE uid='$_G[uid]'");
    DB::query("UPDATE " . DB::table('common_member_field_forum') . " SET groupterms='$grouptermsnew' WHERE uid='$_G[uid]'");
}
/*---- 新增代码 end,解决站帮网vip插件会员过期,没有自动切换用户组问题 ---*/

3、这样就ok了,兼容x2.5-x3.4版本,效果如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值