A-A+

Ecshop和Discuz的整合

2011年01月27日 Discuz, Ecshop 暂无评论

ecshop,discuz等开源网站的整合,主要指会员同步注册,登录,登出等会员操作。这些整合其实都依赖于康盛公司的ucenter(discuz,uchome等都是该公司的开源产品,ecshop是做shopex的商派公司的)。

下面说一下一般情况下的整合流程:

1.安装ucenter

ucenter是整合的核心部分,必须安装。下载ucenter,解压并将upload内全部上传进网站根目录下/ucent文件夹下,打开浏览器http://www.myweb.com/ucenter/install/index.php进入ucenter安装.

2.安装discuz

下载最新discuz,解压并将upload内全部上传进网站根目录下/discuz文件夹下;

进入http://www.myweb.com/ucenter,进ucenter的应用列表的添加新应用,使用url安装,输入discuz的url:http://www.myweb.com/discuz/install/index.php

按流程完成discuz安装,理论上安装成功后,ucenter应用列表中discuz应用通信情况为“通信成功”。如果通信成功即discuz初步整合成功了。

3.安装ecshop

ecshop由于不是康盛自家产品整合步骤稍微复杂点。

a.下载ecshop安装进网站根目录下/ecshop内;

b.http://www.myweb.com/ecshop/install/index.php独自安装成功后;

c.在原ucenter解压文件中advanced下的uc_client文件拷贝进网站根目录下/ecshop下;

d.进入ecshop网站后台->会员整合->点ucenter后的“安装”(如果uc_client文件夹没有复制进来或复制路径不对将无法安装ucenter的),输入正确ucenter的url(http://www.myweb.com/ucenter)进入下一步(本地安装时遇到http://localhost/ucenter安装的情况,输入本机ip代替localhost就可以了),进入用户整合->安装完毕。

e.如果在ucenter应用列表中发现ecshop并且通信成功,那么ecshop基本整合成功了。

会出现的情况:

如果上述应用通信失败,请检查ucenter的url最后不要带/,网上有很多相关通信失败的排查方法,如http://www.1lou.net/view/2671.html

如果上传应用通信成功,但是实际登录时发现不能完全同步登录(有些会discuz登录,ecshop同步;ecshop登录,discuz未登录的等情况),这时候就比较麻烦了,导致上述情况的可能原因估计很多,有缓存等,也和ucenter内部分发登录通知的不可逆有关,我本地弄了很久,最后还是重新安装问题应用解决的,具体原因不明。

下面是网上搜到的关于ucenter整合的内部实现原理:

1、用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证。

2、如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid))。

3、然后这个函数后向Ucenter的index.php传递数据,index.php接受传递的数据,获得model为user,action为synlogin的值。

4、然后Ucenter的index.php调用control目录下的user.php类中的onsynlogin方法,通过foreach循环,以javascript的方式通知uc应用列表中开启同步登陆的应用进行同步登录;即通过get方式传递给各个应用目录中api下的uc.php一些数据。

5、uc.php接收通知并处理get过来的数据,并在函数synlogin(位于uc.php中)通过函数_authcode加密数据(默认以UC_KEY作为密钥),用函数_setcookie设置cookie。

6、各个应用用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过,从而让用户可以自动登陆。

应用程序的logging.php ------>uc_client中的client.php------>Ucenter------>应用程序中api/uc.php

其实Ucenter实现同步登陆的原理就是cookie,一个应用登陆成功之后,向Ucenter传递数据,让Ucenter通知其他的应用也设置cookie,这样用户在访问其他应用的时候通过已经设置好的cookie实现自动登陆。了解了Ucenter的同步原理,再遇到无法同步登陆,或者开发一些与UCenter接口的时候就会容易很多。

原来所谓的同步登录只是在登录时发送post进ucenter,ucenter遍历应用列表分发通知给各个应用,根据各自钥密更改cookies完成所以应用的同步。每个应用发送出去的通知是uc_client文件夹中负责的,接受则是各自api中的api/uc.php负责的,所以会出现上面这样不对称登录的情况,具体原因还是不明啊!所以万能方法,安装常规流程安装,出现问题删了再按,又有问题再按...总会成功的~~~笨方法往往是最有效的。

标签:

给我留言

Copyright © 破晓Web实验室 保留所有权利.   Theme  Ality 沪ICP备14044094号

用户登录