在这里让我们一起学习,一起提高!
通过ucenter可以实现应用程序之间同步登陆,同步退出。好多人都实现了单向同步登陆,却没有实现双向的同步登陆,即就是通过应用程序登陆后,可以同步登陆到discuz论坛等程序,却不能实现登陆论坛以后同步登陆应用程序。这是因为没有彻底理解ucenter的工作模式,仅仅照着官方的例子来做的,而官方的例子向来被人们所诟病,问题太多,BUG也不少。ucenter的登陆采取的是p3p的模式,也有人质疑这种模式,说是站点多了能够拖慢速度,但是对于大部分用户来说已经足够用了,同时也为站点整合提供了一个很好的途径。
下面说说双向登陆:
应用程序登陆后用uc_user_synlogin(客户端client.php程序里的)函数通知ucenter同时建立相应的cookie等,然后ucenter通知各个应用程序uc.php里的'synlogin'的$action,实现其他应用程序的登陆。同理如果做应用程序的反向登陆的话,也需要修改本身的uc.php的synlogin,建立自己的登陆验证。
因为项目的需要,将ecshop2.6,discuz7,以及外部的自制页面应用全部整合到一个站内,要求以上所有位置登录一处,全站通行;一处退出,各处都退出;一处注册,全站有效。
实现这个目的,非Ucenter莫属了,于是下载Ucenter的最新版本1.5进行安装,然后在应用管理中逐个的添加ecshop2.6和discuz7.
以上通信全部成功,可实现ecshop和discuz中,同步登陆和同步退出。
注意到Ucenter1.5的文档里,自带一个examples(范例程序),和我所需要的外部登录页面功能恰好吻合,于是先拿这个范例程序开刀。
调试中发现按照文档里的说明进行设置,无论如何,在ucenter的应用管理里也不能通信成功;
于是进度卡在这里,其实我想告诉同样遇到这个问题的朋友,不必拘泥于非要看到“通信成功”这四个字,其实这里并不是问题的关键。
在example的config.inc.php中,缺少了一个变量:$database = ‘mysql’,这个变量在ucenter的客户端一会要用到,所以需要把这个变量填写进去;
然后,在应用管理->你自己的应用->应用的物理路径填进去,注意这里只要填相对于uc的相对路径就可以,ucenter一会会自动转换为绝对路径;
做完上面的两个步骤,你就可以看到通讯成功了。
实现这个目的,非Ucenter莫属了,于是下载Ucenter的最新版本1.5进行安装,然后在应用管理中逐个的添加ecshop2.6和discuz7.
以上通信全部成功,可实现ecshop和discuz中,同步登陆和同步退出。
注意到Ucenter1.5的文档里,自带一个examples(范例程序),和我所需要的外部登录页面功能恰好吻合,于是先拿这个范例程序开刀。
调试中发现按照文档里的说明进行设置,无论如何,在ucenter的应用管理里也不能通信成功;
于是进度卡在这里,其实我想告诉同样遇到这个问题的朋友,不必拘泥于非要看到“通信成功”这四个字,其实这里并不是问题的关键。
在example的config.inc.php中,缺少了一个变量:$database = ‘mysql’,这个变量在ucenter的客户端一会要用到,所以需要把这个变量填写进去;
然后,在应用管理->你自己的应用->应用的物理路径填进去,注意这里只要填相对于uc的相对路径就可以,ucenter一会会自动转换为绝对路径;
做完上面的两个步骤,你就可以看到通讯成功了。