虚位以待(AD)
虚位以待(AD)
首页 > CMS教程 > Ecshop > ecshop与discuz的uc整合的一些问题

ecshop与discuz的uc整合的一些问题
类别:Ecshop   作者:码皇   来源:互联网   点击:

  1 安装 ecshop和discuz,我用的ecshop版本大概是2 7 3,discuz选择的是x1 5,这个地方得注意编码的一致,否则后面会出错。   2 将 discuz中的uc_client整个文件夹直接copy到ecshop根目录下。   3 进入ecshop ,魔客吧
ecshop下载

  1.安装 ecshop和discuz,我用的ecshop版本大概是2.7.3,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。

  (7)在网站更换服务器后,UC通信一直不通

  解决方法:

  (1)查看Ucenter后台->应用管理,顶部提示如果通信失败尝试修改Ucenter的IP地址, 进去一看IP是127.0.0.1果然有问题,直接去掉,问题解决。

  (2)通信成功但是不能同步登陆,用火狐的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在注册代码后面加上:

  问题顺利解决。

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

  这 个地方需要注意:一定要在注册模板register.htm中输出$synlogin,因为这个返回值其实就是一段js脚本(发同步登陆的通知),需要放 到页面中才能执行。该问题也顺利得到解决。

  (6)这个问题比较怪异,在ecshop登陆后只能在ecshop同步退出,在discuz则不能,而如果在 discuz登陆,在ecshop和discuz均能同步退出。用firebug查看cookie发现从discuz退出的时候cookie也已经清空, 但就是不能在ecshop同步退出,困惑之下只能google,按照上面的一个说法在清空cookie时增加第四个cookie路径参数,问题果然得到解 决,看来操作cookie的时候真的得注意cookie的路径及域。
  以上就是模板堂在整合ecshop和discuz时的过程,遇到的问题及解决方法,看到此文并且有这个需要的童鞋希望能帮到你的一点小忙。

  (7)这个一般情况下是用记事本修改了数据库配置文件,用notepad++打开数据库配置文件移除下bom信息或者参考这个方法移除http://help.ecmoban.com/article-2907.HTML

  PS:技术文章真的不好写,每个地方都得仔细斟酌,生怕写错了误导到别人,不过疏漏有时候在所难免,如果发现有错误之处还望指正。ecshop与discuz的整合


相关热词搜索: ecshop与discuz的uc整合的一些问题