下面只是簡(jiǎn)單的邏輯結(jié)構(gòu),對(duì)于正式的系統(tǒng)需要做具體的處理.
這里需要注意的是:加解密一定需要做安全驗(yàn)證,但是這個(gè)方法也不夠完美,兩個(gè)站點(diǎn)必須有相同一級(jí)域名,另外這種完全基于cookie的方式,安全性不夠高,代碼如下:
- function login()
- {
- $info = callloginserver(); //訪問(wèn)登錄服務(wù)器
- if(!emptyempty($info)) //登錄成功了
- }
- //用戶沒有登錄,則在本系統(tǒng)中登錄并調(diào)用登錄服務(wù)器接口
- function login() //正常的登錄
- {
- .......//驗(yàn)證用戶的合法性
- $_session['uid'] = $user_id;
- setcookie('sign', encrypt($pass9), '', '/', 'the.com');
- }
- //先檢查用戶是否在登錄系統(tǒng)中登錄
- funtion sign()
- {
- $sign = $_cookie['sign'];
- if(!emptyempty($sign))
- {
- $sign = decrypt($sign);
- ..........///登錄成功
- }
- }
- //用戶沒有登錄,則在本系統(tǒng)中登錄并調(diào)用登錄服務(wù)器接口
- function loging() //本系統(tǒng)登錄
- {
- .....//登錄成功
- callseverlogin();//通知用戶登錄,Vevb.com
- }
所有的站點(diǎn)共享一個(gè)登錄系統(tǒng),當(dāng)用戶在其中的一個(gè)站點(diǎn)登錄成功時(shí),該系統(tǒng)調(diào)用其他站點(diǎn)的登錄接口,完成用戶在其他站點(diǎn)的登錄,同時(shí)設(shè)置相應(yīng)的登錄信息,或者在用戶登錄時(shí),只在該系統(tǒng)保存用戶登錄信息,當(dāng)用戶在其他站點(diǎn)登錄時(shí),必須請(qǐng)求該系統(tǒng)接口,獲取用戶是否登錄的信息.
前一種方式的缺點(diǎn)是,不管用戶有沒有使用其他站點(diǎn),那些站點(diǎn)都需要保存用戶狀態(tài);后一種方式就把所有的壓力都轉(zhuǎn)移到登錄系統(tǒng)上面來(lái),而如果要實(shí)現(xiàn)用戶退出的統(tǒng)一操作,就需要站點(diǎn)調(diào)用登錄系統(tǒng)的退出接口,然后登錄系統(tǒng)接口調(diào)用其他站點(diǎn)的退出接口,或者設(shè)置一個(gè)標(biāo)記,如果這個(gè)標(biāo)記不存在則標(biāo)示用戶退出,此時(shí)只要把該標(biāo)示清空即可,其他站點(diǎn)發(fā)現(xiàn)該標(biāo)示不存在就知道用戶已經(jīng)退出系統(tǒng).
這種處理方式需要在登錄系統(tǒng)和個(gè)站點(diǎn)之間規(guī)定登錄接口,和注銷接口,通過(guò)這些接口,個(gè)站點(diǎn)可以很方便的處理用戶登錄或退出.
新聞熱點(diǎn)
疑難解答