dz整合用戶名_第1頁
dz整合用戶名_第2頁
dz整合用戶名_第3頁
dz整合用戶名_第4頁
dz整合用戶名_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、會員系統(tǒng),但想在自己網(wǎng)站上整合進DZ論壇時,遇到了注冊、登陸、退出三要 素的同步處理問題。例如在我自己網(wǎng)站上登陸了,到了論壇卻還要登陸一次,然后,兩邊的登陸名字 也可能并不相同,正是因為此,所以才有了下面這篇 文章。資源:UCenter_1.0.0_SC_UTF8安裝DZ論壇,必須先安裝這個用戶控制中心Discuz_6.1.0_SC_UTF8DZ論壇,注意與上面的UCenter字符編碼要一致安裝:UCenter安裝到網(wǎng)站根目錄下面的/ucenter文件夾(這個可以隨意改,但本文 其后對應文件路徑需注意同步修正)。Discuz安裝到網(wǎng)站根目錄下面的/bbs文件夾(同上,也可以隨意改)關(guān)鍵位置:/

2、bbs/register.phpDZ 論壇注冊頁面/bbs/logging.phpDZ論壇登陸頁面/bbs/uc_client/model/user.phpUCenter 的會員信息入庫及其他(目前只需關(guān)心入庫add_user()SNS所需添加的函數(shù):/bbs/include/gloabl.func.php 文件中formhash()防惡意提交的機器加密函數(shù),所需變量:$discuz_user,$discuz_uid, $discuz_pw, $timestamp, $discuz_auth_keyauthcode()登陸用戶信息的加密函數(shù),所需參數(shù):$string, $operation =

3、DECODE, $key = ”, $expiry = 0dsetcookie() 設(shè)置 cookie 用的修改代碼:1、有新人在論壇注冊時,同時也注冊SNS網(wǎng)站,在位置/bbs/uc_client/model/user.php 的 add_user()函數(shù)內(nèi) 部插入以下代碼(至于 在第幾行插入,我想不用我說了吧)$date = date(“Y-m-d H:i:s”,$this-base-time);$ip = $this-base-onlineip;mysql_query(“insert intot_member(member_id,nickname,email_address,passwo

4、rd,salt,access_date,r eg_date,last_login_ip)values($uid,$username,$email,$password,$salt,$date ,$date,$ip)”);2、有新人在SNS網(wǎng)站上注冊時,同時也注冊論壇,這個位置就由SNS站點定了, 經(jīng)過錯綜復雜的DZ注冊流程及錯綜復雜的數(shù)據(jù)庫關(guān)系研究,發(fā)現(xiàn),最初級的注 冊時,只需修改以下數(shù)據(jù)庫,也就是說其他的DZ關(guān)系庫,都是后期維護的時候,才會有修改 $db-query(“insert intouc_members(username,password,email,regip,regdate,sal

5、t)values($nickname,$pa,$email_address,$ip,$timestamp,$ salt)”);$uid = $db-insert_id();$db-query(“insert into uc_memberfields(uid) values($uid)”); $db-query(“INSERT INTO bbs_members (uid, username, password, groupid, regip, regdate, lastvisit, lastactivity, email, styleid, pmsound, showemail, newslet

6、ter, timeoffset) VALUES ($uid, $nickname,$pa,10,,$ip, $timestamp, $timestamp,$timestamp, $email_address, ”,1,,1,,1,,9999,)”);$db-query(INSERT INTO bbs_memberfields (uid) VALUES ($uid)”); 這里要注意一點,因為這個UID的特殊性,所以,最好是SNS站點與DZ站點的 UID是一致的,所以,以上的插入代碼應該優(yōu)先SNS站點的插入代碼,以便于 取得 UCenter 的 UID,然后再將取得的UID以ID號的形式插入到S

7、NS站點。舉例如下(到這里已經(jīng)看 懂了,就不必看下面的例子了):注冊到論壇$db-query(insert intouc_members(username,password,email,regip,regdate,salt)values($nickname,$pa,$email_address,$ip,$timestamp,$ salt)”);$uid = $db-insert_id();$db-query(insert into uc_memberfields(uid) values($uid)”); $db-query(“INSERT INTO bbs_members (uid, user

8、name, password, groupid, regip, regdate, lastvisit, lastactivity, email, styleid, pmsound, showemail, newsletter, timeoffset) VALUES ($uid, $nickname,$pa,10,,$ip, $timestamp, $timestamp,$timestamp, $email_address, ”,1,,1,,1,,9999,)”);$db-query(INSERT INTO bbs_memberfields (uid) VALUES ($uid)”); /注冊到

9、SNS$query = $db-query(insert intot_member(member_id,nickname,password,salt,email_address,sex,zj_addres s,privacy_set,access_date,reg_date,last_login_ip)values($uid,$nickname,$pa,$salt,$email_address,$sex ,$zj_address,$is_hidden,$save_time,$save_time,$ip)” );3、有人在論壇登陸時,同時也登陸SNS站點,這個簡單,在位置/bbs/logging

10、.php 中有dsetcookie字樣的下面增加SNS站點的登陸即可,例如 dsetcookie(uid”,$discuz_uid,$cookietime);4、有人在SNS站點登陸時,同時也登陸DZ論壇,這個有點復雜,需利用函數(shù) formhash()生成表單驗證碼,然后再根據(jù)郵箱名取得UCenter中的用戶名,再 用取得的用戶名、密碼、表單驗證碼等模擬登陸DZ論壇,之所以要模擬登陸,是為了避開DZ論壇 紛繁復雜的登陸驗證系統(tǒng),經(jīng)幾番嘗試,要在SNS站點上實現(xiàn)論壇登陸,幾乎是 不可能,除非從一開始SNS站點就是在一個完整的DZ上開發(fā)出來的。將下面這段代碼放 到登陸頁的頁頭文件里去:/獲取當前登

11、陸的用戶ID號$uid = $_COOKIEuid;應用DZ論壇算法,取得常量FORMHASH ,只用作登陸$discuz_pw = $discuz_pw ? $discuz_pw : ”;$discuz_secques = $discuz_secques ? $discuz_secques : ”;$discuz_uid = $discuz_uid ? $discuz_uid : 0;if($uid)(if($arr = $db-fetch_first(“select username,password from uc_members where uid = $uid”)$discuz_ui

12、d = $uid;$discuz_pw = $arrpassword;$discuz_user = $arrusername;include_once ./bbs/forumdata/cache/cache_settings.php;extract($_DCACHEsettings);$discuz_auth_key =md5($_DCACHEsettingsauthkey.$_SERVERHTTP_USER_AGENT);define(FORMHASH, formhash();$link_logout =/bbs/logging.php?action=logout&formhash=.FOR

13、MHASH;將上面生成的常量FORMHASH,放到SNS站點登陸表單中在這個登陸表單中再加入兩個隱藏的參數(shù),以用作DZ登陸 然后當別人在點擊登陸SNS站點時,用JS實現(xiàn)同步模擬DZ論壇登陸 function regsubmit()($.post(ajax_jq.php?action=get_uc_username”,email:$(#username”).val(),function(xml)$.post(/bbs/logging.php?action=login&loginsubmit=true”,formhash:$(#formhash”).val(),cookietime:$(#cook

14、ietime”).val(),loginfield:$(#loginfield”).val(),username:$(“result”,xml).text(),password:$(“#password”).val(),ajax:true););JS中的ajax_jq.php?action=get_uc_username的功能就是根據(jù)用戶輸入的郵箱 名找到UCenter中的用戶,并回傳出來,如下: if($action = get_uc_username”)$email = $_POSTemail;if(!isemail($email)(ajax_show_xml(“你的登陸郵箱名輸入 不正確

15、。”);exit;else(if($arr = $db-fetch_first(“select username from uc_members where email =$email”)ajax_show_xml($arrusername);exit;這里需要用到函數(shù)ajax_show_xml(),此函數(shù)可以在gloabal.func.php找到, 功能是將傳入的參數(shù)變成XML文件,以便于回傳。5、當退出DZ論壇時,同時也退出SNS站點,在位置/bbs/logging.php中的頁 面上方,有$action = logout字樣的下面,添加語句dsetcookie(uid”,”,-86400

16、0*365);6、當退出SNS站點時,同時也退出DZ論壇,這里DZ有一個非常復雜的退出驗 證及處理,大體是為了 COOKIE與SESSION能同步處理成退出狀態(tài),為此,DZ設(shè) 置了一個 formhash,此formhash其實與前面登陸時要用到的formhash的生成原理是一樣的,但此函 數(shù)所需的參數(shù),卻又模擬不出來,與登陸時一樣,要真正解決此問題,除非從 一開始SNS站點就是在一個完整的DZ上開發(fā)出來的,但這是不太可能的。所以,這里我們只 能再來模擬一次DZ論壇的退出。其實就是訪問一下這個鏈接/bbs/logging.php?action=logout&formhash=2fafe52f這里

17、看上去簡單,但參數(shù)formhash包含的信息非常廣(如$discuz_user, $discuz_uid, $discuz_pw),要在SNS站點上模擬出這個fomrhash字符串,則 需要摸索清楚DZ的加密功能及那些數(shù)都數(shù)不清的參數(shù)間是如何調(diào)用,但這幾乎是一個不可能的事 情(研究時,差點就卡死在這里了。)。后來想到,這個formhash參數(shù),是在DZ頁頭文件common.inc.php中生成的,那我在調(diào)用鏈接/bbs /logging.php?action=logout&formhash=2fafe52f 時,不 管我傳入的這個formhash參數(shù)是否正確,那個正確的formhash總應該是

18、在common.inc.php文件中的,而且,退出登陸這功能,只要能成功退出就 行,不需要考慮太多安全因素。所以,我用了下面這個方法:位置:/bbs/logging.php文件中$action = logout字樣的下方第一行,加 入:$formhash = FORMHASH;當別人點擊退出按鈕時,同時執(zhí)行一次上面鏈接即可 退出 用 JS 模擬退出 DZ 論壇 function dzlt_logout(p)$.post(p);總結(jié):經(jīng)過以上六步,最終我們實現(xiàn)了 SNS站點 與DZ論壇,在注冊、登陸、退出時的 同步操作。附件:1、DZ論壇注冊時,填入bbs_members數(shù)據(jù)表中的用戶密碼,是一個隨機 碼, 沒有任何意義

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論