购买用户组程序中,有关积分更新记录的参数值设置不够严谨,导致查看管理后台 “工具-运行记录-扩展记录-积分变更” 页面,进行过滤时出现非预期结果。
程序路径:source/include/spacecp/spacecp_usergroup.php
第83行,对 $extgroupidsnew 赋值
- $extgroupidsnew = implode("\t", $extgroupidsarray);
复制代码
第97,98行,将 $extgroupidsnew 结果存入数据库及写入积分更新记录
- C::t('common_member')->update($_G['uid'], array('groupexpiry' => $groupexpirynew, 'extgroupids' => $extgroupidsnew));
- updatemembercount($_G['uid'], array($creditstrans => "-$amount"), true, 'UGP', $extgroupidsnew);
复制代码
从上面的代码可以看出,$extgroupidsnew 是用户扩展用户组字段的新数值(字符串),而积分更新记录采用 $extgroupidsnew 的数据类型与设计思路不符合,虽然入库后可以得到假想中的结果。当用户购买扩展用户组时,如果已经拥有其他扩展用户组,非预期结果产生了。
例如用户拥有扩展用户组 18 ,想购买新的扩展用户组 21, 则对应的积分更新记录数据关联的编号为 18,而非预期的 21
建议修正第98行代码,将 $extgroupidsnew 替换为 $groupid 或 $group['groupid']
|