使用ucenter實(shí)現(xiàn)多站點(diǎn)同步登錄的講解
做Web開(kāi)發(fā)經(jīng)常會(huì)要求實(shí)現(xiàn)多站點(diǎn)同步登錄的情況,對(duì)于PHP開(kāi)發(fā)來(lái)說(shuō),我們可以使用ucenter來(lái)實(shí)現(xiàn)多個(gè)站點(diǎn)同時(shí)登陸同時(shí)退出,用戶(hù)同步的功能。下面我們一起看一下ucenter是如何實(shí)現(xiàn)同步登陸的。
首先站點(diǎn)都要引入一個(gè)uc_client這樣一個(gè)客戶(hù)端,以登陸為例,登陸時(shí)首先會(huì)調(diào)用一個(gè)外部函數(shù),uc_client/client.php下的uc_user_login檢查是否存在此用戶(hù),如果正確則繼續(xù)執(zhí)行登陸代碼,檢測(cè)此用戶(hù)過(guò)程:通過(guò)用戶(hù)是以什么方式連的uc(mysql還是http post)然后去相應(yīng)地用不同函數(shù)來(lái)檢測(cè)用戶(hù),檢測(cè)完成后實(shí)現(xiàn)本地登陸,代碼自己寫(xiě),然后讓其他應(yīng)用程序也登陸,此時(shí)調(diào)用外部函數(shù)uc_user_synlogin,過(guò)程如下:
Uc_user_synlogin調(diào)用uc_api_post來(lái)實(shí)現(xiàn)是要做哪個(gè)模塊,比如現(xiàn)在就是user模塊,傳的參數(shù)是user_id,具體這是怎么實(shí)現(xiàn)的沒(méi)再仔細(xì)看,總之是將數(shù)據(jù)發(fā)送到uc_api即你的ucenter地址的index.php,同時(shí)附一些參數(shù),根據(jù)這些參數(shù)然后再去讀里面所有可通信的應(yīng)用程序,讓他們也實(shí)現(xiàn)登陸,這是其他程序的事兒了。
通知其他應(yīng)用程序主要是通過(guò)ucenter,去向各應(yīng)用程序下的api/uc.php發(fā)送一些數(shù)據(jù),這些數(shù)據(jù)由uc.php接到請(qǐng)求然后去執(zhí)行相應(yīng)的登陸操作等。
下面舉個(gè)例子描述一下整個(gè)過(guò)程
1.用戶(hù)xxx在某一應(yīng)用程序的login.php,輸入用戶(hù)名,密碼。先用uc_user_login函數(shù)到uc server驗(yàn)證此用戶(hù)和密碼,如正確,則寫(xiě)入session,寫(xiě)入cookies,并更新應(yīng)用程序會(huì)員表中的登錄ip,登錄時(shí)間。用戶(hù)感覺(jué)不到這個(gè)過(guò)程。
2.然后通過(guò)uc_user_synlogin通知uc server 用戶(hù)xxx登錄成功,這個(gè)過(guò)程可能使用ajax,用戶(hù)感覺(jué)不到通知過(guò)程。
3.uc server收到這個(gè)消息后,馬上命令手下,把xxx登錄的消息,像令牌環(huán)一樣,發(fā)給所有愿意接收(后臺(tái)中那個(gè)是否開(kāi)啟同步登錄)這個(gè)消息的其它應(yīng)用程序。其實(shí)就是帶參數(shù)訪問(wèn)一下各應(yīng)用程序的uc.php,用戶(hù)感覺(jué)不到這個(gè)過(guò)程。
4.各應(yīng)用程序靠api下的uc.php來(lái)接收uc server發(fā)來(lái)的消息,并對(duì)uc server言聽(tīng)計(jì)從,讓干什么就干什么?,F(xiàn)在,收到讓xxx用戶(hù)在你的程序中登錄的命令,馬上執(zhí)行。并寫(xiě)本應(yīng)用程序的session,并且使用p3p, 寫(xiě)入相同域或不同域的cookies. 用戶(hù)感覺(jué)不到這個(gè)過(guò)程。
5.最后所有和uc整合的程序,xxx均登錄成功。用戶(hù)從www.dhdzp.com登錄后, 跳到www.dhdzp.com同樣顯示登錄。
6.應(yīng)用程序與uc server的會(huì)話結(jié)束。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- PHP設(shè)計(jì)模式之工廠模式(Factory Pattern)的講解
- 使用PHP反射機(jī)制來(lái)構(gòu)造"CREATE TABLE"的sql語(yǔ)句
- 啟用OPCache提高PHP程序性能的方法
- 在CentOS上安裝搭建PHP+Apache+Mysql的服務(wù)器環(huán)境
- CentOS下安裝Memcached和PHP Memcached擴(kuò)展
- PHP+RabbitMQ實(shí)現(xiàn)消息隊(duì)列的完整代碼
- PHP實(shí)現(xiàn)的數(shù)據(jù)對(duì)象映射模式詳解
- PHP函數(shù)積累總結(jié)
- PHP與Perl之間知識(shí)點(diǎn)區(qū)別整理
- PHP后臺(tái)備份MySQL數(shù)據(jù)庫(kù)的源碼實(shí)例
相關(guān)文章
PHP實(shí)現(xiàn)的XXTEA加密解密算法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的XXTEA加密解密算法,結(jié)合實(shí)例形式分析了php XXTEA加密解密算法類(lèi)的定義與簡(jiǎn)單使用操作技巧,需要的朋友可以參考下2018-08-08
簡(jiǎn)單的方法讓你的后臺(tái)登錄更加安全(php中加session驗(yàn)證)
通過(guò)特定文件為后臺(tái)入口注冊(cè)session,否則失敗退出。即直接使用原后臺(tái)地址將無(wú)法登錄后臺(tái)。這樣一來(lái),入口文件名的多樣性、可變更性將為你的后臺(tái)登錄提供更加安全的環(huán)境2012-08-08
PHP實(shí)現(xiàn)字符串大小寫(xiě)轉(zhuǎn)函數(shù)的功能實(shí)例
這篇文章主要給大家介紹了關(guān)于利用PHP如何實(shí)現(xiàn)字符串大小寫(xiě)轉(zhuǎn)函數(shù)功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友一起來(lái)看看啊2019-02-02
PHP實(shí)現(xiàn)根據(jù)瀏覽器跳轉(zhuǎn)不同語(yǔ)言頁(yè)面代碼
以下是對(duì)使用PHP實(shí)現(xiàn)根據(jù)瀏覽器跳轉(zhuǎn)不同語(yǔ)言頁(yè)面的代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08

