1、用戶登錄discuz,通過(guò)logging.php文件中的函數(shù)uc_user_login對(duì)post過(guò)來(lái)的數(shù)據(jù)進(jìn)行驗(yàn)證,也就是對(duì)username和password進(jìn)行驗(yàn)證。 2、如果驗(yàn)證成功,將調(diào)用位于uc_client下client.php " /> 国产老师开裆丝袜喷水漫画,538prom精品视频我们不只是,无码乱人伦一区二区亚洲一

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

單點(diǎn)登錄 Ucenter示例分析

首先我們先來(lái)了解下Ucenter登錄步驟

1、用戶登錄discuz,通過(guò)logging.php文件中的函數(shù)uc_user_login對(duì)post過(guò)來(lái)的數(shù)據(jù)進(jìn)行驗(yàn)證,也就是對(duì)username和password進(jìn)行驗(yàn)證。
2、如果驗(yàn)證成功,將調(diào)用位于uc_client下client.php文件中的函數(shù)uc_user_synlogin,在這個(gè)函數(shù)中調(diào)用 uc_api_post('user', 'synlogin', array('uid'=>$uid))。
3、然后這個(gè)函數(shù)后向Ucenter的index.php傳遞數(shù)據(jù),index.php接受傳遞的數(shù)據(jù),獲得model為user,action為synlogin的值。
4、然后Ucenter的index.php調(diào)用control目錄下的user.php類(lèi)中的onsynlogin方法,通過(guò)foreach循環(huán),以Javascript的方式通知uc應(yīng)用列表中開(kāi)啟同步登陸的應(yīng)用進(jìn)行同步登錄;即通過(guò)get方式傳遞給各個(gè)應(yīng)用目錄中api下的uc.php一些數(shù)據(jù)。
5、uc.php接收通知并處理get過(guò)來(lái)的數(shù)據(jù),并在函數(shù)synlogin(位于uc.php中)通過(guò)函數(shù)_authcode加密數(shù)據(jù)(默認(rèn)以UC_KEY作為密鑰),用函數(shù)_setcookie設(shè)置cookie。
6、各個(gè)應(yīng)用用對(duì)應(yīng)的密鑰解碼上面設(shè)置的cookie,得到用戶id等數(shù)據(jù);通過(guò)這個(gè)值來(lái)判斷用戶是否經(jīng)過(guò)其它應(yīng)用登錄過(guò),從而讓用戶可以自動(dòng)登陸。

應(yīng)用程序的logging.php ------>uc_client中的client.php------>Ucenter------>應(yīng)用程序中api/uc.php

其實(shí)Ucenter實(shí)現(xiàn)同步登陸的原理就是cookie,一個(gè)應(yīng)用登陸成功之后,向Ucenter傳遞數(shù)據(jù),讓Ucenter通知其他的應(yīng)用也設(shè)置cookie,這樣用戶在訪問(wèn)其他應(yīng)用的時(shí)候通過(guò)已經(jīng)設(shè)置好的cookie實(shí)現(xiàn)自動(dòng)登陸。了解了Ucenter的同步原理,再遇到無(wú)法同步登陸,或者開(kāi)發(fā)一些與UCenter接口的時(shí)候就會(huì)容易很多。

大致步驟 首先我們要先安裝 ucenter 然后把uc_client 這個(gè)文件夾復(fù)制到自己的項(xiàng)目里面去 然后呢在配置幾個(gè)文件

client.php相當(dāng)于函數(shù)庫(kù)

uc.php相當(dāng)于回調(diào)文件

還有一個(gè) config.inc.php 是配置文件

當(dāng)你有2個(gè)應(yīng)用都設(shè)置了同步登陸之后 當(dāng)你登陸一個(gè)應(yīng)用 然后執(zhí)行
復(fù)制代碼 代碼如下:
include './config.inc.php';
include './uc_client/client.php';
$usernames="feiye";
$passwords="789123";
list($uid, $username, $password, $email) = uc_user_login($usernames, $passwords);
if($uid > 0) {
setcookie("username",$username,time()+intval(24*3600));
echo uc_user_synlogin($uid);
echo '登錄成功';
} elseif($uid == -1) {
echo '用戶不存在,或者被刪除';
} elseif($uid == -2) {
echo '密碼錯(cuò)';
} else {
echo '未定義';
}

uc_user_synlogin() 這個(gè)函數(shù) 代表著 要同步登陸到其他所有開(kāi)啟同步登陸的函數(shù) uc自己會(huì)在后臺(tái)把所有開(kāi)啟同步登陸的應(yīng)用都給循環(huán)遍歷一遍 然后 在頁(yè)面上輸出
復(fù)制代碼 代碼如下:
<script type="text/Javascript" src="http://127.0.0.70/api/uc.php?time=1374540644&code=14fdIufn%2B2YwkQlN9P07FEHOfZvDJupvgBgaRPn7R0DJmbEwCb23vKwO1uaeybLq3HZhtokoZrnqu7NGi09jzs684drFCbLDiSpKhk6P50MftBRA3vp4yIswhrPMl1dXo5ajB7CVZ9F8EI%2BkdFfq0E0rdyeRkuz8goeHhg" reload="1"></script>

復(fù)制代碼 代碼如下:
<script type="text/Javascript" src="http://127.0.0.71/api/uc.php?time=1374540644&code=07a91g8SepQwwfA3C1uN1sPhC4v6yuER1jFbVTQMK%2BQZmTkjwOz8X%2B8rWgNmKdhlXe9XXVQqAkDjN26CK6BMA19ZpLoiSW4wuNnxHAB9xXLt2VExuyf03MnEHAC%2BUdjwb58sbXGcYUpM4Bmzdm3Q92ObSp0Kk2qCd12fqg" reload="1"></script>

類(lèi)似這種的js代碼 就是發(fā)送給每個(gè)開(kāi)啟同步登陸的應(yīng)用 然后 每個(gè)開(kāi)啟同步登陸的應(yīng)用 的 回調(diào)文件 uc.php 接受到后 會(huì)進(jìn)行解密 解密好后 其實(shí) 你就可以自己來(lái)寫(xiě)代碼了 這個(gè)uc.php回調(diào)文件的代碼不一定非要按照他們的格式來(lái)寫(xiě) 你也可以自己寫(xiě)你自己的代碼 比如說(shuō)我就是根據(jù)session來(lái)做同步登陸的
復(fù)制代碼 代碼如下:
function synlogin($get, $post) {
$uid = $get['uid'];
$username = $get['username'];
if(!API_SYNLOGIN) {
return API_RETURN_FORBIDDEN;
}
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
setcookie('gwyy',$username,time()+3600,'/','127.0.0.71');
_setcookie('Example_auth', _authcode($uid."/t".$username, 'ENCODE'));

$_SESSION['username'] = $username;
$_SESSION['uid'] = $uid;
}

function synlogout($get, $post) {
if(!API_SYNLOGOUT) {
return API_RETURN_FORBIDDEN;
}
//note 同步登出 API 接口
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
_setcookie('Example_auth', '', -86400 * 365);
unset($_SESSION['username']);
unset($_SESSION['uid']);
session_destroy();
}

這樣 當(dāng)用戶刷新了別的應(yīng)用頁(yè)面之后 就自動(dòng)登陸了

注意 如果在UC里面添加應(yīng)用 提示通信沒(méi)有成功 那么原因很簡(jiǎn)單 就是沒(méi)有找到你 http://xxxx/api/uc.php 這個(gè)文件 只要有這個(gè)文件在 那么通信 肯定會(huì)成功的

其實(shí)UC的原理很簡(jiǎn)單 就是某個(gè)應(yīng)用登陸后 然后后臺(tái)輪詢發(fā)送給同步登陸的應(yīng)用的回調(diào)文件 回調(diào)文件接收到用戶ID之后 生成cookie或者session然后進(jìn)入登陸模式。

php技術(shù)單點(diǎn)登錄 Ucenter示例分析,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99久久精品国产国产毛片 | 亚洲国产在线视频精品 | 99久久精品6在线播放 | 手机在线观看无码日韩视频 | 一道本av免费不卡播放 | 人人干人人爽 | 第一怡春院 | 日日干夜夜爱 | 国产精品视频成人 | 色戒西瓜视频 | 日韩一区二区三区免费体验 | 边做边爱BD免费看片 | 精品丰满人妻无套内射 | 91精品国产色综合久久不 | 九九久久国产精品大片 | 狠狠综合久久综合88亚洲 | 精精国产www视频在线观看免费 | 色男人的天堂久久综合 | 成年免费大片黄在线观看岛国 | yw193.c国产在线观看 | 99久久无码热高清精品 | 国产 高清 无码 在线播放 | 欧美一区二区激情视频 | 久久99re8热在线播放 | 新金梅瓶玉蒲团性奴3 | 国产亚洲精品首页在线播放 | 乌克兰16~18sex | 18女下面流水不遮网站免费 | 第一次处破女完整版电影 | 亚洲综合AV在线在线播放 | 大胸美女被C得嗷嗷叫动态图 | 亚洲一区综合图区 | 伊人久久综合成人亚洲 | jizz日本女人| 和美女啪啪啪动态图 | 免费看国产精品麻豆 | 欧美 亚洲 日韩 中文2019 | 偷窥欧美wc经典tv | 天美传媒 免费观看 | 黄页网站免费视频大全9 | 我和妽妽在厨房里的激情区二区 |