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

先说一下遇到的问题:

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

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

解决方法:

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 ? ''.$group['grouptitle'].'' : $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'

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

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

你可能感兴趣的:(PHP)