之前简单地写过一篇用户注册整合 ucenter 的文章,因为写得很简洁,很多童鞋都看的不是很明白,也收到了很多童鞋的问题邮件。前几天因为公司的几个网站需要做同步登录功能,因此就用到了 ucenter 作为中间桥梁。现在很多开源的 cms 系统、博客系统、论坛系统都自带整合 ucenter 的插件,但是如果是自己开发的网站需要和 discuz 或者 ecshop 同步登录的话,就需要把自己的完网站整合上 ucenter 了。
其实整合 ucenter 也没有传说中的那么困难,今天我就详细的介绍下如何把自己的网站整合上 ucenter,实现多站点同步登录,同步退出的方法。
首先你需要安装一个 ucenter,ucenter 可以去康盛的官方网站下载最新版本。ucenter 他所起到衔接各个站点会员注册,登录作用,ucenter 的会员表中包含了你需要整合的各个网站的所有会员,用户不管在那个网站注册,程序先是把会员信息添加到了 ucenter 的会员表中,然后再添加到当前网站的会员表里面,而在登录的时候,程序是先去查询 ucenter 会员表中是否存在该用户,如果存在查询当前网站会员表中是否存在,如果不存在就证明该用户是通过另外一个站点注册的并且是在该站点第一次登录, 就需要把该会员添加到当前站点的会员表中。上面所说的就是 ucenter 的会员整合机制了。
ucenter 安装完之后,这时就需要去 ucenter 后台添加应用了,首先登录到 ucenter 的后台,点击应用管理里面的添加应用,把你需要整合的站点信息添加进去。应用名称,应用的主 URL,通信密钥,应用类型,应用接口文件名称是必填项目,点击提交后,下面就会生成相关的应用的 UCenter 配置信息,这个配置信息等会儿会用到。ucenter 的应用配置好后,就需要把整合 ucenter 需要用到的文件放你站点的根目录下面,文件包括:
B:还有一个 inlude 文件夹(里面只需要一个文件 db_mysql.class.php:这个是里面链接数据库操作的),
C:还有一个 config.inc.php(而我自己的配置文件就是这个,所以我改了个名字叫 config.php,这里改之后,就需要吧 api/uc.php 里面的所有 config.inc.php 替换成 config.php 了),
D:uc_client 文件(在你下载的 ucenter 压缩包里面的这个文件拷贝过来就 ok 啦),
文件夹放好之后,就是配置 config 文件了,把上面在 ucenter 后天添加应用的时候生成的 " 应用的 UCenter 配置信息 " 复制到 config.inc.php 中,然后在刷新 ucenter 后台的应用列表,看下他的通信状况,如果通信成功就证明该站点已经整合成功了。
现在,ucenter 和站点的整合就已经结束了,但是还没有实现同步登录同步退出的功能,如何实现站点之前的同步登录同步退出呢?这就需要去修改某些文件了,找到 api 下面的 uc.php,这个就是实现同步登录同步退出操作的函数文件,找到 synlogin 这个 function,这个 function 就是同步登录的函数的,这个函数里面你可以进行数据库操作,保存你站点中登录之后的 cookie 或者 session。这里只是完成了别的站点同步登录到你的网站,那么如果让你的网站也同步登录到其他的站点呢?这就需要去修改序了,这个代码在 ucenter 的接口文档里面有登录和注册的函数,如登录函数是 uc_user_login($str_user_name, $str_user_pwd); 大家可以自己看看,需要注意的是要实现同步登录,他是 js 来实现登录的,ucenter 程序是把同步登录站点的代码生成了 js 代码,$ucsynlogin = uc_user_synlogin($int_id); 这就是同步登录的代码,你可以打印下这个代码,你就可以看到,你 ucenter 有几个应用,他就会生成多少个 js 代码,而这些代码就是去通知其他站点同步登录的,所以这些代码需要在页面上面执行才能实现同步登录功能。代码修改完了之后,你需要把 ucenter 后台应用里面的同步登录和同步退出选择上, 相同,同步退出和同步登录也一样的是想。
到此为止,网站会员整合 ucenter,实现多站点同步登录方法的讲解就结束了。大家可以结合 ucenter 的相应的整合文档和实例测试一下。