Phpcms v9默认会员注册判断用户组出错的Bug修正方法

年后不断在忙,更新比较慢,今天CMSYOU在这里与大家分享最近在实际项目中碰到的一个问题:Phpcms v9管理后台设置了默认注册会员积分和会员组,结果在前台用户注册的时候却出现的了用户组错乱的情况。这种情况一般不会出现,在给默认注册会员积分大过一定程度的时候才会出现。

Phpcms v9默认会员组

Phpcms v9默认会员组,可以看出新手上路积分50、中级会员150分

Phpcms v9会员组设置

Phpcms v9会员组设置,当设置新会员默认点数为100,当于第一个会员组(新手上路)积分时,前台注册会员组则会出现错误

根据排查,最后找到phpcms/modules/member/index.php第985行:

//如果超出用户组积分设置则为积分最高的用户组

if($point > max($grouppointlist)) {

$groupid = key($grouppointlist);

} else {

foreach ($grouppointlist as $k=>$v) {

if($point >= $v) {

$groupid = $tmp_k;

break;

}

$tmp_k = $k;

}

}

return $groupid;

其中的$tmp_k前后没有定义或用到,问题就在这里,修正代码如下:

//如果超出用户组积分设置则为积分最高的用户组

if($point > max($grouppointlist)) {

$groupid = key($grouppointlist);

} else {

foreach ($grouppointlist as $k=>$v) {

if($point >= $v) {

$groupid = $k;

break;

}

}

}

return $groupid;

截图记录如下:

Phpcms v9默认会员注册判断用户组出错的Bug修正方法

Phpcms默认会员注册判断用户组出错的Bug修正方法

Phpcms v9这个Bug隐藏得比较深,只有在会员模块配置(位置:用户 > 会员管理 > 会员模块配置)时给到新会员默认点数超过一两个会员组的积分时才会出现。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享