Ucenter的同步登陆与同步退出

新版本的Discuz论坛,包含了一个叫Ucenter的用户平台,通过这个平台,我们可以把Discuz论坛和Ucenter home、ecshop以及dedecms、帝国CMS等开源平台的用户统一起来,也可以自己开发基于Ucenter的系统,保持用户与Discuz论坛的统一。
应该说,Ucenter已经做得非常简单了,只是缺了一个入门的用户指南,还是花费了我一天多时间,才完成了网站首页与论坛的同步登陆与同步退出功能。
这里做一些简要的分析,希望能帮助新上手的朋友节省一点时间。
一、官方手册
附件中是Ucenter的接口开发手册,其中,developguide文件夹下是手册的HTML文件,可以直接双击打开阅读,client文件夹中是提供调用的库文件,要把它复制到每个应用的文件夹中。examples里面,则是一个实例项目,如果时间充裕,建议安装这个项目进行阅读和调试。
二、UCENTER服务器设置
1、用管理员账户进入管理中心,点击右侧的ucenter链接
2、输入UCENTER的管理员密码,确认后单击左侧的应用管理,添加新应用,选择自定义安装,以下是我填写的自定义内容,可以参考以一下:

填写完毕返回应用列表后,你会发现,原来正常安装的应用显示的都是“通信成功”,只有自定义的那个,显示的是“通信失败”。
二、API
1、在应用根目录下新建一个api目录(以我填写的应用图为例,应该是'/home/public/api',每个人的实际目录自然各不相同),先做个小实验:新建一个uc.php文件,里面只输入如下内容:
然后,回到管理中心的应用管理列表,你会发现,已经显示通信成功了。
2、当然,目前这个uc.php实际上是没有用处的。所以我们要从examples/api中复制uc.php到api目录下。uc.php的作用是为uceter提供一个接口,这样,当用户在discuz论坛或是其它应用比如ecshop中登录或退出时,我们自定义的应用也能够同步登陆和退出。
3、复制过来的uc.php还需要修改才能重新使用,它include了config.inc.php和mysql.class.php两个文件,mysql.class.php无需任何修改,而config.inc.php,实例中已经有了详细的注释,我就不一一重复解释了,阅读一下uc.php的源码,注意这两个文件的路径确保其被正确引用,这时,还是回到管理中心的应用管理列表,确定应用仍然是“通信成功”的。
4、修改uc.php中的uc_note类中的synlogin方法和synlogout方法,根据你自己的需要写入登录和退出代码。这样,当用户在discuz论坛中登录或退出时,我们的应用就能同步登录和退出了。比如,您可以在我的论坛http://bbs.cn09.com 和 http://www.cn09.com 之间进行测试。
三、应用本身的同步登录和同步退出
当然,除了通过discuz论坛来控制应用的登录退出之外,我们也会希望,通过应用本身也能实现的同步登录和同步退出。
1、在登录和退出的源码中,必须正确包含config.inc.php和client.php文件;
2、在client.php中,我们用到了两个函数用于登录,第一个函数是
uc_user_login($username,$password)用于用户登录,登录后返回一个数组,如果登录失败,返回数组的第一个元素值为-1($array[0]==-1),如果登录成功,返回的数组为
$array(0=>uid的值,1=>username,2=>password的md5值......);
也就是说,当返回数组的第一个元素大于0时,我们可以继续登录操作,小于0时则报错;
3、第二个函数时uc_user_synlogin($uid),运行上一个函数成功后,可以直接运行这个函数来登录其它应用,注意用法是这样的:
echo uc_user_synlogin($uid);
测试这个代码你会发现,实际上它输出的是一段script代码,事实上仍然是通过客户端分别登录不同应用的,只不过用户看不到而已。
4、同步退出的函数则是
echo uc_user_synlogout();
直接输出这个函数返回的script代码,就能够实现ucenter的同步退出。

尽管对ucenter系统代码有着这样或是那样的抱怨,但是,ucenter无疑是目前最流行的用户平台,它确实解决了多系统的用户管理问题,并且实现起来相当简单。

你可能感兴趣的:(Ucenter的同步登陆与同步退出)