PHPBB3跟網(wǎng)站結(jié)合,實(shí)現(xiàn)登入網(wǎng)站同時(shí)登入論壇
因?yàn)楣ぷ鞯脑?要用到這個(gè),所以研究了一下.
主要思路是模擬COOKIES ..先往Cookies里面插入用戶ID和一個(gè)SessionID,然后再往數(shù)據(jù)庫(kù)中的sessions表里面插入SessionID,和用戶ID,如果打開論壇,系統(tǒng)會(huì)驗(yàn)證COOKIES的信息跟數(shù)據(jù)庫(kù)中的信息是否一樣,如果一樣的話就可以實(shí)現(xiàn)自動(dòng)登入..登入部份主要代碼如下:
<?php//獲取32位隨機(jī)的SESSIONID//初始化各值$Session_testId=create_sess_id(32);$SessionIp='192.168.0.100';$cookie_path='/';$cookieName='phpbb3_1w36a';$userBrowserInfo= $_SERVER['HTTP_USER_AGENT'];$userIpAdd=$_SERVER['REMOTE_ADDR'];
//獲取表單的用戶名和密碼$cmd_username=$_POST['username'];$cmd_password=$_POST['password'];//先跟CMS系統(tǒng)表驗(yàn)證,如果通過.查詢相應(yīng)用戶名BBS用戶表中的ID
$link=mysql_connect('localhost','root','');mysql_select_db('cms');$selectUid='select user_id from bbs_users where username='$cmd_username'';$uidResult=mysql_query($selectUid);$userId=null;while($row1 = mysql_fetch_array($uidResult, MYSQL_NUM)){$userId=$row1[0];}//echo $userId;mysql_close($link);
//往Cookies里插入用戶ID信息setcookie($cookieName.'_u',$userId,time()+100000000,$cookie_path,$SessionIp,false);//往Cookies里插入SessionID信息setcookie($cookieName.'_sid',$Session_testId,time()+100000000,$cookie_path,$SessionIp,false);
//往phpb_sessions表中插入Session信息$link=mysql_connect('localhost','root','');mysql_select_db('cms');$sqlcommand='insert into bbs_sessions(session_id,session_user_id,session_last_visit,session_start,session_time,session_ip,session_browser,session_page)';$sqlcommand.=' values('$Session_testId',$userId,''.time().'',''.time().'',''.time().'','$userIpAdd','$userBrowserInfo','index.php')';
//echo $sqlcommand;
mysql_query($sqlcommand);mysql_close($link);
//生成一個(gè)32位隨機(jī)數(shù)function create_sess_id($len=32){// 獲取當(dāng)前時(shí)間的微秒list($u, $s) = eXPlode(' ', microtime());$time = (float)$u + (float)$s;// 產(chǎn)生一個(gè)隨機(jī)數(shù)$rand_num = rand(100000, 999999);$rand_num = rand($rand_num, $time);mt_srand($rand_num);$rand_num = mt_rand();// 產(chǎn)生SessionID$sess_id = md5( md5($time). md5($rand_num) );// 截取指定需要長(zhǎng)度的SessionID$sess_id = substr($sess_id, 0, $len);return $sess_id;} header('location: http://192.168.0.100/bbs/index.php');//print_r($_COOKIE);?>
這樣,就可以實(shí)現(xiàn)自動(dòng)登入了.
當(dāng)然,只有這些還是不夠,還要屏蔽PHPBB中的用戶修改賬戶信息和注冊(cè)新用戶.比如要修改注冊(cè)的,可以修改
phpbb3rc2stylesprosilvertemplate這個(gè)目錄下面的.ucp_register.html模版面.把里面的內(nèi)容的刪了.加上這個(gè)
<script type='text/javascript' language='javascript'> window.location='member.php';</script>
這樣,當(dāng)用戶點(diǎn)注冊(cè),閱讀完條款后點(diǎn)注冊(cè),就會(huì)跳到網(wǎng)站上的注冊(cè)頁(yè)面.修改信息的大體一樣..
我的作法并沒有統(tǒng)一用戶表.而是各有各的用戶系統(tǒng)..
當(dāng)在網(wǎng)站上注冊(cè)用戶時(shí),同時(shí)往PHPBB數(shù)據(jù)庫(kù)的users表和user_group表中插入用戶信息.記住,一定要看看分組啊,
權(quán)限,插入相應(yīng)的東西,要不然可能不能登入,不改發(fā)信息,不能讀版塊等問題.這部份比較長(zhǎng)簡(jiǎn)單,代碼就省了.主要是登入部份..

網(wǎng)公網(wǎng)安備