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的代码刷新页面(因为有部分内容需要根据账户不同显示,所以加了这个),造成的同步错误,具体原理还在查证
问题二: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的代码刷新页面(因为有部分内容需要根据账户不同显示,所以加了这个),造成的同步错误,具体原理还在查证
相关文章推荐
- Discuz X3整合ECShop同步登录登出问题解决方案
- ecshop整合UCenter,discuz,实现会员同步登录 不需要二次登陆
- DZ X3 和 ECshop 通过uc_server实现会员同步整合教程.
- 整合discuz ecshop ucenter 通讯异常问题
- ucenter同步问题(整合iwebshop或者thinkphp)
- ucenter同步问题(整合iwebshop或者thinkphp)
- 通过ucenter整合discuz和phpcms,在discuz修改用户密码,ucenter通知失败,phpcms无法同步更新密码
- ucenter同步问题(整合iwebshop或者thinkphp)
- 通过ucenter整合discuz和phpcms,在discuz修改用户密码,ucenter通知失败,phpcms无法同步更新密码
- 通过接口解决多线程下的数据同步问题
- 通过ajax访问Tomcat服务器web service接口时出现No 'Access-Control-Allow-Origin' header问题的解决办法
- 使用java ucenter api(utf8)同步ucenter信息乱码问题
- JS通过Get方式调用接口编码问题
- 通过引入SiteMesh的JSP标签库,解决Freemarker与SiteMesh整合时,自定义SiteMesh标签的问题
- Ucenter实现同步登入和登出
- uc.php接口调试,ucenter整合对接自己的系统的方法及Authracation has expiried原因
- 如何通过js处理相同时间的信息整合到一起的问题
- 解决整合 UCenter 首次注册同步登录与自动激活
- dede整合discuz后完美实现双向同步登入登出解决方案
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群