程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> ucenter同步登陸機制

ucenter同步登陸機制

編輯:關於PHP編程

做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類型的用法區別

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved