整合了 ucenter就等於整合了整個php界的所有php程式。
一、功用:
不對,何止整合了整個php界的所有php程式,而是整合了 ucenter就等於整合了所有的asp/asp.net/php/jsp等其它語言的所有web應用程式。(因為ucenter client的api開發包,dz會推出其它語言版)
而且所有整合的程式同步登入,同步退出,同步修改密碼。終端使用者可以通過它輕鬆通行在各個應用之中,無需重複登入、註冊、退出
乙個id可以出入乙個站內的所有程式,如cms和bbs,也可以乙個id出入www.a.com和www.b.com及www.c.com
a.com的使用者可以和b.com的使用者互發短訊息pm,a.com的使用者可以和b.com的使用者加好友。
而且可以實現站內信(pm)和其它任意站的任意程式的站內信(pm)互通。
可以實現www.a.com與[url]www.b.com及www.c.com[/url]共享乙個使用者庫,www.a.com的使用者可以給www.b.com的使用者pm簡訊.
使用者組與discuz不對應的問題也得到解決。因為一般應用程式的使用者組是單獨的乙個應用,和discuz再沒有關係,而是和ucenter有關係,而ucenter沒有使用者組的概念。
二、整合方法:
如果單說整合使用者的話,整合時應用程式的改動也非常小,原資料庫不用動,原寫cookies的**不用動,原寫資料庫session的**不用動,原來的程式不用怎麼動,只需改動以下4個檔案:
longin.php register.php logout.php 修改密碼檔案.php (忘記密碼.php不用動,用原來的就可以)
4個檔案中加上和ucenterapi通訊的語句和邏輯結構。
另需要針對ucenter新增加乙個檔案uc.php,這個檔案就是應用程式接收ucenter傳來的指令並執行的檔案。而且他利用p3p技術實現反向登入a.com或是同時反向登入a.com/b.com/c.com的dedecms或是phpcms或是任意所有程式。
共計改4個檔案,增乙個檔案。
如果要是整合站內信pm,好友,頭像等功能,思路與方法和整合使用者類同。
另外有一點,在不同的系統之間註冊的使用者,在第一次登入這個從來沒有登入過的系統時,會讓啟用。借用這個啟用,可以讓使用者完善在本應用程式中的資料,如企業註冊資料。資料不完善,不可以啟用。
如在bbs註冊乙個使用者test,第一次來到b2b的程式中,這時,並不會自動登入,而是要求使用者啟用,而test在bbs註冊時填的字段與b2b中要求的不同。這時讓使用者完善資料。第二次來就會自動登入。
三、 uc原理:
以使用者登入為例介紹,其它登出,改密碼,訊息,頭像,好友均類同。
1.從使用者***在某一應用程式的login.php,輸入使用者名稱,密碼講起。
先用uc_user_login函式到uc server驗證此使用者和密碼,如正確,則寫入session,寫入cookies,並更新應用程式會員表中的登入ip,登入時間。使用者感覺不到這個過程。
2.然後通過uc_user_synlogin通知uc server 使用者***登入成功,這個過程可能使用ajax,使用者感覺不到通知過程。
3.uc server收到這個訊息後,馬上命令手下,把***登入的訊息,像令牌環一樣,發給所有願意接收(後台中那個是否開啟同步登入)這個訊息的其它應用程式。其實就是帶引數訪問一下各應用程式的uc.php,使用者感覺不到這個過程。
4.各應用程式靠api下的uc.php來接收uc server發來的訊息,並對uc server言聽計從,讓幹什麼就幹什麼。現在,收到讓***使用者在你的程式中登入的命令,馬上執行。
並寫本應用程式的session,並且使用p3p, 寫入相同域或不同域的cookies. 使用者感覺不到這個過程。
5.最後所有和uc整合的程式,***均登入成功。使用者從www.test.com/bbs登入後, 跳到www.test.com/news同樣顯示登入。因為bbs 和news系統在後台均已登入。
6.應用程式與uc server的會話結束。
得益於uc設計的精巧過程,整個過程,使用者完全感覺不到ucenter的存在.這是整合程式歷史上的創新。完
ajax原理的簡單實現
ajax的主要作用就是不重新整理頁面更新頁面的內容,也就是非同步傳輸。用來顯示ajax響應的div。下面就是一段使用ajax的簡單示例。function ajaxrequest else if window.activexobject if req return false req.onreadys...
dbUtils簡單實現原理
在資料庫初級階段,通過連線池連線資料庫,然後在將查詢的結果轉換為物件,過程太過複雜,以下便是實現對此類過程的簡單封裝,另外可以根據此類的封裝,簡單的理解一下spring 中jdbctemplate的query 和update 方法。public class dbutils public dbutil...
簡單promise實現原理
promise可以有三種狀態,分別是pedding fulfilled rejected pending promise物件例項建立時候的初始狀態 fulfilled 可以理解為成功的狀態 rejected可以理解為失敗的狀態 構造乙個promise例項需要給promise建構函式傳入乙個函式。傳入...