關(guān)于DISCUZ不用通行證登陸得內(nèi)容介紹
更新時(shí)間:2008年10月04日 15:56:39 作者:
DISCUZ是中國(guó)最常用的論壇,雖然他本身有通行證給大家連接,但實(shí)際上用戶的統(tǒng)一還是很不好,經(jīng)常要建立兩個(gè)用戶表,第一不利于注冊(cè)和管理,第二浪費(fèi)數(shù)據(jù)庫(kù)。
我們var_dump($_COOKIE)一下,發(fā)現(xiàn)顯示的是:array(5) { ["eVb_cookietime"]=> string(7) "2592000" ["eVb_oldtopics"]=> string(3) "D1D" ["eVb_sid"]=> string(6) "HfxRDJ" ["eVb_auth"]=> string(68) "LSwuxyf7QECdnc+9AxgOihQvc1ScFQQsUvgnafBVrFmuHq8DlIvj57rq1PVRlJ05g1Kb" ["eVb_visitedfid"]=> string(1) "2" }(可能有不一樣的地方,不用著急)
我們這里注意一下eVb_auth,其實(shí)我們的加密信息被存儲(chǔ)到這個(gè)COOKIE里了,這里的EVB是DISCUZ默認(rèn)的COOKIE前綴,如果你更改了COOIKE的話這個(gè)也會(huì)變化。
所以我們就要處理這個(gè)eVb_auth;
function is_login()
{
if(isset($_COOKIE['eVb_auth'])){
list($discuz_pw, $discuz_secques, $discuz_uid) = isset($_COOKIE['eVb_auth']) ? explode("\t", authcode($_COOKIE['eVb_auth'], 'DECODE','123')) : array('', '', 0);
$discuz_pw = addslashes($discuz_pw);
$discuz_secques = addslashes($discuz_secques);
$discuz_uid = intval($discuz_uid);
// 不存在$_DCOOKIE['auth']的話 就直接清楚COOKIE
if(isset($_COOKIE['eVb_auth']) && !$discuz_uid) {
clearcookies();
}
if($discuz_uid){
$sql = "SELECT `username`,`groupid` FROM `cdb_members` WHERE `uid`='$discuz_uid'";
$rs = $this -> _db -> query($sql);
$row = $this -> _db -> fetch($rs);
$discuz_groupid = $row['groupid'];
$discuz_username = $row['username'];
return $array = array("discuz_uid"=>$discuz_uid,"discuz_groupid" => $discuz_groupid,
"discuz_username" => $discuz_username);
}
}else{
if(isset($_COOKIE['eVb_sid'])){
$sid = $_COOKIE['eVb_sid'];
$sql = "SELECT `uid`,`username`,`groupid` FROM `cdb_sessions` WHERE sid ='$sid'";
$rs = $this -> _db -> query($sql);
$row = $this -> _db -> fetch($rs);
if($row){
$discuz_groupid = $row['groupid'];
$discuz_username = $row['username'];
$discuz_uid = $row['uid'];
return $array = array("discuz_uid"=>$discuz_uid,"discuz_groupid" => $discuz_groupid,
"discuz_username" => $discuz_username);
}else{
return 0;
}
}else{
return 0;
}
}
}
我們先看if(isset($_COOKIE['eVb_sid'])){前的這部分
個(gè)人感覺(jué)唯一要解釋一下的就是這句:list($discuz_pw, $discuz_secques, $discuz_uid) = isset($_COOKIE['eVb_auth']) ? explode("\t", authcode($_COOKIE['eVb_auth'], 'DECODE','123')) : array('', '', 0);
這是將EVB_AUTH解密的過(guò)程,這里用DECODE來(lái)解密,記得后面的123是你的KEY,要保持一直,不然解密不會(huì)成功的。
然后在看下半部分:
DISCUZ是通過(guò)SESSION和COOKIE兩種方式加密的,而他的SESSION保存在數(shù)據(jù)庫(kù)中,我們下邊這部分就是利用當(dāng)沒(méi)有$_COOKIE['eVb_auth']時(shí),用$_COOKIE['eVb_sid']來(lái)取出信息;這不過(guò)是個(gè)數(shù)據(jù)庫(kù)操作,沒(méi)啥好將的,這樣,通過(guò)建立和讀取我們就可以取出DISCUZ的信息了。
相關(guān)文章
Thinkphp 5.0實(shí)現(xiàn)微信企業(yè)付款到零錢
這篇文章主要為大家詳細(xì)介紹了Thinkphp 5.0實(shí)現(xiàn)微信企業(yè)付款到零錢,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09ThinkPHP行為擴(kuò)展Behavior應(yīng)用實(shí)例詳解
這篇文章主要介紹了ThinkPHP行為擴(kuò)展Behavior應(yīng)用實(shí)例,對(duì)于讀者深入了解ThinkPHP框架程序設(shè)計(jì)大有幫助,需要的朋友可以參考下2014-07-07PHP錯(cuò)誤Allowed memory size of 67108864 bytes exhausted的3種解決辦法
這篇文章主要介紹了PHP錯(cuò)誤Allowed memory size of 67108864 bytes exhausted的3種解決辦法,PHP的內(nèi)存溢出錯(cuò)誤,需要的朋友可以參考下2014-07-07php下實(shí)現(xiàn)偽 url 的超簡(jiǎn)單方法[轉(zhuǎn)]
php下實(shí)現(xiàn)偽 url 的超簡(jiǎn)單方法[轉(zhuǎn)]...2007-09-09深入解析Laravel5.5中的包自動(dòng)發(fā)現(xiàn)Package Auto Discovery
眾所周知Laravel 5.5 發(fā)布在即,目前已經(jīng)確定會(huì)增加一個(gè)神奇的新特性:Package Auto Discovery。下面這篇文章主要給大家深入的介紹了關(guān)于Laravel5.5中包自動(dòng)發(fā)現(xiàn)Package Auto Discovery的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09php實(shí)現(xiàn)JWT(json web token)鑒權(quán)實(shí)例詳解
這篇文章主要介紹了php實(shí)現(xiàn)JWT(json web token)鑒權(quán)實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11