您的位置:首页 > 运维架构

ecshop 通过UCenter 与 Discuz! x2整合时 ECSHOP接口的同步登出问题

2012-05-02 11:34 363 查看
问题一:ecshop注册无法和discuz同步账号的问题,在shop的注册代码里加了$user->login($username, $password);$ucdata = isset($user->ucdata)? $user->ucdata : '';解决。

问题二:ecshop注册的账号虽然同步到了discuz,但是首次在discuz登录存在账号需要激活的问题,在dx的api/uc.php里找到synlogin方法,在
if($member = DB::fetch($query)) {

dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);
}
后加入
else
{
$username = $get['username'];
$password = md5(time().rand(100000, 999999));
$email = $get['email'];
$ip = $_SERVER['REMOTE_ADDR'];
$time = time();

$userdata = array(
'uid' => $uid,
'username' => $username,
'password' => $password,
'email' => $email,
'adminid' => 0,
'groupid' => 10,
'regdate' => $time,
'credits' => 0,
'timeoffset' => 9999
);
DB::insert('common_member', $userdata);

$status_data = array(
'uid' => $uid,
'regip' => $ip,
'lastip' => $ip,
'lastvisit' => $time,
'lastactivity' => $time,
'lastpost' => 0,
'lastsendmail' => 0,
);http://www.ganshuw.com/
DB::insert('common_member_status', $status_data);
DB::insert('common_member_profile', array('uid' => $uid));
DB::insert('common_member_field_forum', array('uid' => $uid));
DB::insert('common_member_field_home', array('uid' => $uid));

$query = DB::query("SELECT uid, username, password FROM ".DB::table('common_member')." WHERE uid='$uid'");
if($member = DB::fetch($query))
{
dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);
}
}

问题三.用以上办法解决后,又存在一个奇怪的现象,在ecshop新注册的账号直接在同步登陆的dx系统里登出,ecshop无法同步登出(但重新登录的用户名可以做到登录登出的完美同步),仔细对比了cookie,建站公司最后在同事的指点下终于解决了,由于shop里(modules/intergrates /ucenter.php)清除cookie的方法写的是
setcookie("ECS[user_id]", '');
setcookie("ECS[password]", '');
没有指定cookie_path,改为
setcookie("ECS[user_id]", '', $time, $this->cookie_path);
setcookie("ECS[password]", '', $time, $this->cookie_path);
问题解决

今天又遇到一个问题,突然ecshop到dx的同步登陆出错了,仔细查证后发现由于在ecshop头部登陆后加了一个window.reload的代码刷新页面(因为有部分内容需要根据账户不同显示,所以加了这个),造成的同步错误,具体原理还在查证
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐