做php開發的朋友大都知道有個ucenter可以用來實現多個網站同時登陸同時退出,使用者同步的功能。下面作者將要就ucenter是如何?同步登陸的和大家做一下分享。
首先網站都要引入一個uc_client這樣一個用戶端,以登陸為例,登陸時首先會調用一個外部函數,uc_client/client.php下的uc_user_login檢查是否存在此使用者,如果正確則繼續執行登陸代碼,檢測此使用者過程:通過使用者是以什麼方式連的uc(mysql還是http post)然後去相應地用不同函數來檢測使用者,檢測完成後實現本地登陸,代碼自己寫,然後讓其他應用程式也登陸,此時調用外部函數uc_user_synlogin,過程如下:
Uc_user_synlogin調用uc_api_post來實現是要做哪個模組,比如現在就是user模組,傳的參數是user_id,具體這是怎麼實現的沒再仔細看,總之是將資料發送到uc_api即你的ucenter地址的index.php,同時附一些參數,根據這些參數然後再去讀裡面所有可通訊的應用程式,讓他們也實現登陸,這是其他程式的事兒了。
通知其他應用程式主要是通過ucenter,去向各應用程式下的api/uc.php發送一些資料,這些資料由uc.php接到請求然後去執行相應的登陸操作等。
這是我寫的,基本上和他的一樣,本想把具體到每個函數都寫的可今天有點累了,呵呵,自己找吧還是很簡單的。
1.從使用者xxx在某一應用程式的login.php,輸入使用者名稱,密碼講起。先用uc_user_login函數到uc server驗證此使用者和密碼,如正確,則寫入session,寫入cookies,並更新應用程式會員表中的登入ip,登入時間。使用者感覺不到這個過程。
2.然後通過uc_user_synlogin通知uc server 使用者xxx登入成功,這個過程可能使用ajax,使用者感覺不到通知過程。
3.uc server收到這個訊息後,馬上命令手下,把xxx登入的訊息,像令牌環一樣,發給所有願意接收(後台中那個是否開啟同步登入)這個訊息的其它應用程式。其實就是帶參數訪問一下各應用程式的uc.php,使用者感覺不到這個過程。
4.各應用程式靠api下的uc.php來接收uc server發來的訊息,並對uc server言聽計從,讓幹什麼就幹什麼。現在,收到讓xxx使用者在你的程式中登入的命令,馬上執行。並寫本應用程式的session,並且使用p3p, 寫入相同域或不同域的cookies. 使用者感覺不到這個過程。
5.最後所有和uc整合的程式,xxx均登入成功。使用者從www.phpernote.com/bbs登入後, 跳到www.phpernote.com/同樣顯示登入。因為bbs 和news系統在後台均已登入。
6.應用程式與uc server的會話結束。
您可能感興趣的文章
- 如何去除dedeCMS後台登陸頁面的廣告
- php Output Control 深入理解 ob_flush 和 flush 的區別
- 網站上多種url都能訪問同樣的內容是件危險的事
- http請求中同步請求和非同步請求的區別
- js setInterval和setTimeout用法分析
- CuteFTP串連ftp伺服器時彈出“遇到無效的參數”錯誤的解決辦法
- PHP中跳出多重迴圈使用break,continue,goto,return,exit的用法和區別
- mysql中tinyint、smallint、int和bigint類型的用法區別
http://www.bkjia.com/PHPjc/764139.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/764139.htmlTechArticle做php開發的朋友大都知道有個ucenter可以用來實現多個網站同時登陸同時退出,使用者同步的功能。下面作者將要就ucenter是如何?同步登陸...