关于DX和PHPCMS之间的积分和威望兑换

2016-07-07 16:47 来源:www.chinab4c.com 作者:ecshop专家



并且本人提供改DX的这种问题服务, QQ:372567764
这几天帮朋友搞关于DX和PHPCMS之间的积分和威望的兑换,因为好像原来的版本是无法兑换成功的,经过本人两个小时的研究,终于发现了问题,DX的api/uc.php这个文件里可能会有很严重的问题,因为uc_note这个类定义了好几个成员属性在类中使用了这几个成员,但是在外部却没有对这几个成员进行赋值,所以,导致了积分和威望的无法兑换,当然,现在本人所发现的只有这一个,还有没有其它的,从其代码的逻辑不严谨的结构来看,这样的事,可能还会有很多,所以,提醒各位朋友,如果有这类似的问题,最好,先找找这个文件里的原因,现本人将积分和威望不能兑换的情况说明一下。不能兑换的原因是如下的代码造成的:
[table=98%]
[table=98%]
function updatecredit($get, $post) {
global $_G;

if(!API_UPDATECREDIT) {
return API_RETURN_FORBIDDEN;
}

$credit = $get['credit'];
$amount = $get['amount'];
$uid = $get['uid'];

if(!$this->db->result_first("SELECT count(*) FROM ".$this->tablepre."members WHERE uid='$uid'")) {
return API_RETURN_SUCCEED;
}
updatemembercount($uid, array($credit => $amount));

DB::insert('common_credit_log', array('uid' => $uid, 'operation' => 'ECU', 'relatedid' => $uid, 'dateline' => time(), 'extcredits'.$credit => $amount));

return API_RETURN_SUCCEED;
}
主要的问题就在这一行中,第一个,在UC.php中$this->tablepre根本没有传入数据库表的前缀,还有一个就是这个SQL执行的$this->db也根本没有传入,只是一个空变量,所以,要解决这个问题,有一种方法,是这样的
传入$this->tablepre="你的UCenter中members表的前缀";
$this->db->result_first("SELECT count(*) FROM ".$this->tablepre."members WHERE uid='$uid'")
改为B::fetch_first("SELECT count(*) FROM ".$this->tablepre."members WHERE uid='$uid'");
这样就可以了