整合ec和ucenter

最近在做一个电子商务网站,需要在上面挂一个论坛,discuz无疑是最佳的选择,自然就得需要实现ecshop与discuz的同步登陆,否则空挂一个论坛在上面毫无意义。同步登陆不仅方便用户,也能很好的黏住用户和统一管理用户数据。好在之前研究过Ucenter的通信原理,所以实现起来还是比较有底气的,不过还是花了几天的时间才搞定。下面就谈谈ecshop和discuz的整合过程,整合过程中出现的问题及解决方法。
  ecshop也是康盛的产品,同步登陆的东西有些文件已经存在,所以相对于整合非康盛的产品来说要稍微容易一些,但实现的方法是一致的。废话不多说,直接进入主题。1.安装ecshop和discuz,我用的ecshop版本大概是2.7,discuz选择的是x1.5,这个地方得注意编码的一致,否则后面会出错。2.将discuz中的uc_client整个文件夹直接copy到ecshop根目录下。3.进入ecshop后台->会员整合->安装Ucenter,这一步比较简单,一般不会出什么问题。这三步完成后去discuz的ucenter后台->应用管理中查看ecshop和discuz是否已经通信成功。这三步完成后似乎就可以了,其实不然,还差得远呢。我总结一下自己整合过程中出现的几个问题及解决方法:(1)通信失败;(2)通信成功,但是ecshop和discuz不能同步登陆;(3)ecshop新注册的用户到discuz登陆需要激活;(4)ecshop新注册的用户不能同步登陆到discuz;(5)discuz注册的用户不能同步登陆到ecshop;(6)在ecshop登陆或注册的用户,在discuz退出后,不能同步退出到ecshop。解决方法:(1)查看Ucenter后台->应用管理,顶部提示如果通信失败尝试修改Ucenter的IP地址,进去一看IP是127.0.0.1果然有问题,直接去掉,问题解决。(2)通信成功但是不能同步登陆,用FF的firebug跟踪请求发现根本没有同步登陆的请求,而且还报错:Bad Request,Invalid HostName,百思不得其解,果断百度一下发现是discuz后台->站长->Ucenter设置中IP地址是127.0.0.1,直接去掉,但是还不能同步登陆,跟踪discuz同步登陆的代码发现$_G['setting']['allowsynlogin']是0,但是Ucenter应用管理中明明已经开启同步登陆,于是想到可能是缓存的原因,去discuz后台更新缓存,结果同步登陆终于OK。(3)跟踪同步登陆代码发现ecshop新注册的用户只存放到Ucenter中,激活之后才会写入到pre_common_member中,同时dsetcookie。这个问题的解决方法很明显即增加对pre_common_member及pre_common_member_count的写入(该文件为discuz下的api目录中的uc.php)。

1 if($member = DB::fetch($query)) {
2     dsetcookie('auth', authcode("$member[password]\t$member[uid]"'ENCODE'),$cookietime);
3 }else{//非激活状态下写入
4     $query = DB::query("SELECT email FROM ".DB::table('ucenter_members')." WHERE uid='$uid'");
5     if($a = DB::fetch($query)){
6         $email $a['emaiil'];
7     }else{
8         $email '';
9     }
10     $userdata array(
11         'uid' $get['uid'],
12         'username' $get['username'],
13         'password' $get['password'],
14         'email' $email,
15         'adminid' = 0,
16         'groupid' = 10,
17         'regdate' $get['time'],
18         'credits' = 0,
19         'timeoffset' = 9999
20     );
21     DB::insert('common_member'$userdata);
22     DB::insert('common_member_count'array('uid'=>$get['uid']));
23     dsetcookie('auth', authcode("$get[password]\t$get[uid]"'ENCODE'), $cookietime);
24 }

加完之后此问题解决。(4)因为之前研究过Ucenter通信的原理,所以该问题的第一反应就是ecshop注册完后没有调用同步登陆的代码,于是找到ecshop注册文件user.php在注册代码后面加上:

1 $user->login($username,$password);$ucdata = isset($user->ucdata) ?  $user->ucdata : '';

问题顺利解决。(5)该问题跟(4)一样的道理,也是在注册文件member_register.php中增加同步登陆的调用:

1 $synlogin $_G['setting']['allowsynlogin'] ? uc_user_login($_G['uid']) : '';

这个地方需要注意:一定要在注册模板register.htm中输出$synlogin,因为这个返回值其实就是一段js脚本(发同步登陆的通知),需要放到页面中才能执行。该问题也顺利得到解决。(6)这个问题比较怪异,在ecshop登陆后只能在ecshop同步退出,在discuz则不能,而如果在discuz登陆,在ecshop和discuz均能同步退出。用firebug查看cookie发现从discuz退出的时候cookie也已经清空,但就是不能在ecshop同步退出,困惑之下只能google,按照上面的一个说法在清空cookie时增加第四个cookie路径参数,问题果然得到解决,看来操作cookie的时候真的得注意cookie的路径及域。
  以上就是自己在整合ecshop和discuz时的过程,遇到的问题及解决方法,看到此文并且有这个需要的童鞋希望能帮到你的一点小忙。PS:技术文章真的不好写,每个地方都得仔细斟酌,生怕写错了误导到别人,不过疏漏有时候在所难免,如果发现有错误之处还望指正。

声明: 本文由( 张林 )原创编译,转载请保留链接: ecshop与discuz的整合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ucenter是一个开源的用户管理系统,可以用于实现用户注册、登录、资料管理等功能。而WordPress是一个流行的开源博客平台,也可以用于构建网站。将ucenter和WordPress整合可以让用户在WordPress网站上使用ucenter的账号进行登录和使用,提高用户体验。 要整合ucenter和WordPress,需要安装并配置ucenter插件和WordPress插件。具体步骤如下: 1. 下载并安装ucenter和WordPress插件。可以从官方网站下载ucenter和WordPress插件,然后按照说明进行安装。 2. 配置ucenter插件。打开ucenter插件的配置文件,设置ucenter的数据库连接等参数。然后将ucenter插件的文件上传到WordPress的wp-content目录下。 3. 配置WordPress插件。打开WordPress插件的配置文件,设置WordPress的数据库连接等参数。然后将WordPress插件的文件上传到WordPress的wp-content目录下。 4. 在WordPress后台启用ucenter插件和WordPress插件。登录WordPress后台,在插件管理页面中找到ucenter插件和WordPress插件,启用它们。 5. 在ucenter后台配置WordPress应用。登录ucenter后台,创建一个新的应用,然后将应用的相关参数复制到WordPress插件的配置文件中。 6. 测试整合效果。在WordPress的注册和登录页面测试整合效果,确保用户可以使用ucenter账号进行登录和使用。 以上是整合ucenter和WordPress的基本步骤,具体操作可能会因为不同的版本而有所不同。建议在操作前先备份好相关文件和数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值