本帖最后由 mark35 于 2014-3-24 19:35 编辑
upload/source/function/function_credit.php line22
- function _checklowerlimit($action, $uid = 0, $coef = 1, $fid = 0, $returnonly = 0) {
- global $_G;
- include_once libfile('class/credit');
- $credit = & credit::instance();
- $limit = $credit->lowerlimit($action, $uid, $coef, $fid);
- if($returnonly) return $limit;
- if($limit !== true) {
- $GLOBALS['id'] = $limit; // <--------- 设定了一个全局变量
- $lowerlimit = is_array($action) && $action['extcredits'.$limit] ? abs($action['extcredits'.$limit]) + $_G['setting']['creditspolicy']['lowerlimit'][$limit] : $_G['setting']['creditspolicy']['lowerlimit'][$limit];
复制代码
设定$GLOBALS['id']这个全局变量有何用处? 在其他代码中没有找到。查看dz72代码
include/global.func.php line82
- function checklowerlimit($creditsarray, $coef = 1) {
- if(is_array($creditsarray)) {
- global $extcredits, $id; // <----这儿搞出的全局变量
- foreach($creditsarray as $id => $addcredits) {
- $addcredits = $addcredits * $coef;
- if($addcredits < 0 && ($GLOBALS['extcredits'.$id] < $extcredits[$id]['lowerlimit'] || (($GLOBALS['extcredits'.$id] + $addcredits) < $extcredits[$id]['lowerlimit']))) {
- showmessage('credits_policy_lowerlimit');
- }
- }
- }
- }
复制代码
估计是程序员是在老版本代码上改写新版程序,看到 global $extcredits, $id; 这一行不知道也没仔细搜索$id这个全局变量在哪儿用到、有什么用。直接照搬的global显得偷懒,干脆就直接赋值给$GLOBLS吧
这样随意赋值全局变量并且使用的是最常见的键名,如果在其他文件中发生id冲突那么是极难排查的
|