PHPBB3跟網站結合,實現登入網站同時登入論壇

因爲工作的原因.要用到這個,所以研究了一下.

主要思路是模擬COOKIES ..先往Cookies裏面插入用戶ID和一個SessionID,然後再往數據庫中的sessions表裏面插入SessionID,和用戶ID,如果打開論壇,系統會驗證COOKIES的信息跟數據庫中的信息是否一樣,如果一樣的話就可以實現自動登入..登入部份主要代碼如下:

<?php
//獲取32位隨機的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系統表驗證,如果通過.查詢相應用戶名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);


//生成一個32位隨機數
function create_sess_id($len=32)
{
// 獲取當前時間的微秒
 list($u, $s) = eXPlode(' ', microtime());
 $time = (float)$u + (float)$s;
// 產生一個隨機數
 $rand_num = rand(100000, 999999);
 $rand_num = rand($rand_num, $time);
 mt_srand($rand_num);
 $rand_num = mt_rand();
// 產生SessionID
 $sess_id = md5( md5($time). md5($rand_num) );
// 截取指定需要長度的SessionID
 $sess_id = substr($sess_id, 0, $len);
 return $sess_id;
}
header("location: http://192.168.0.100/bbs/index.php");
//print_r($_COOKIE);
?>

這樣,就可以實現自動登入了.

當然,只有這些還是不夠,還要屏蔽PHPBB中的用戶修改賬戶信息和註冊新用戶.比如要修改註冊的,可以修改

phpbb3rc2/styles/prosilver/template這個目錄下面的.ucp_register.html模版面.把裏面的內容的刪了.加上這個

<script type="text/javascript" language="javascript">
  window.location='member.php';
</script>

這樣,當用戶點註冊,閱讀完條款後點註冊,就會跳到網站上的註冊頁面.修改信息的大體一樣..

我的作法並沒有統一用戶表.而是各有各的用戶系統..

當在網站上註冊用戶時,同時往PHPBB數據庫的users表和user_group表中插入用戶信息.記住,一定要看看分組啊,

權限,插入相應的東西,要不然可能不能登入,不改發信息,不能讀版塊等問題.這部份比較長簡單,代碼就省了.主要是登入部份..

 

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章