小京东与UCenter整合记录
  • 分类:建站问题
  • 发表:2016-08-13
  • 围观(2,452)
  • 评论(0)

这个修改过程只实现了小京东到UCenter和DZ论坛的同步注册,同步修改密码,同步登陆[没有制作同步退出,但是看懂原理的话,可以很简单修正]。

1、安装UCenter

2、在程序上做整合,UC里选择是Ecshop,小京东里面有整合程序,相互安装设置方法一般流程即可,不记录。

默认整合以后的样子应该是:A、Ucenter后台显示应用通信成功;B、在Dz中注册的用户可以在小京东中登陆;C、小京东中无法登陆,显示SQL错误;D、在小京东中无法注册,显示SQL错误,或者显示注册成功却无法登陆;E、在小京东中修改用户密码显示成功,但是登陆时却需要用老密码登陆。

解决方法:

1、在小京东中不能登陆的问题:

经排查,在程序中涉及一个语句:$this->field_mobile_phone,应该显示的是ECS_USERS表的mobile_phone字段,但是却是空的,,改的方法很简单,,找到$this->field_mobile_phone,改成mobile_phone。

要改的地方有:/includes/modules/integrates/ucenter.php文件和/includes/modules/integrates/integrate.php文件。

2、在小京东中不能注册的问题:

原因简单的让没法说,问题是:默认的,UCENTER注册新用户用的是add_user函数,但是在小京东的注册过程中,要用到的是add_user_by_mobile和add_user_by_email函数,在Ucenter.php中没有这两个函数,系统默认从integrate.php调用,而integrate.php中没有UCenter的同步函数。所以,,同步不了。

解决方法:将integrate.php文件的add_user_by_mobile和add_user_by_email函数复制到UCENTER.php文件中。并做修改,将原有的

$sql = "INSERT INTO " . $this->table($this->user_table) . " (" . implode(',', $fields) . ")" . " VALUES ('" . implode("', '", $values) . "')";
$this->db->query($sql);
if($this->need_sync)
{
$this->sync($username, $password);
}

修改为:

$uid = uc_call("uc_user_register", array($username, $password,$mail));
if ($uid <= 0)
{
if($uid == -1)
{
$this->error = ERR_INVALID_USERNAME;
return false;
}
elseif($uid == -2)
{
$this->error = ERR_USERNAME_NOT_ALLOW;
return false;
}
elseif($uid == -3)
{
$this->error = ERR_USERNAME_EXISTS;
return false;
}
elseif($uid == -4)
{
$this->error = ERR_INVALID_EMAIL;
return false;
}
elseif($uid == -5)
{
$this->error = ERR_EMAIL_NOT_ALLOW;
return false;
}
elseif($uid == -6)
{
$this->error = ERR_EMAIL_EXISTS;
return false;
}
else
{
return false;
}
}else{
//EC注册
$sql = "INSERT INTO " . $this->table($this->user_table) . " (" . implode(',', $fields) . ")" . " VALUES ('" . implode("', '", $values) . "')";
$this->db->query($sql);
if($this->need_sync)
{
$this->sync($username, $password);
}
}

注意:I、在$uid = uc_call("uc_user_register", array($username, $password,$mail));中,如果是在add_user_by_mobile函数中,$mail默认是空的;II、在add_user_by_mobile函数中,默认生成的用户名格式是u155????1234这样格式的,如果用户记不住的话,建议换成纯手机号。这一句在register.php中,语句是:$username = generate_username_by_mobile($mobile_phone);,修改为$username=$mobile_phone;即可。

3、修改密码不能同步

这个是最简单不过的,,

原因是在ucenter.php中,默认forget_pwd=0,但是修改密码时必须为1,所以,只需要改forget_pwd的值即可。

方法:修改find_password.php文件中的$result = $GLOBALS['user']->edit_user(array('username' => $user['user_name'], 'password' => $password));语句为:$result = $GLOBALS['user']->edit_user(array('username' => $user['user_name'], 'password' => $password),1);

 

至此,应该就可以了。测试PC可以同步登陆,但是不能同步退出,,但是,我用的是APP,,,PC端同步登陆也没有毛用,,,,,,,,

欢迎能访问到的朋友交流学习。

Top