程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHPBB3跟網站結合,實現登入網站同時登入論壇

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

編輯:關於PHP編程

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

主要思路是模擬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=php(做為現在的主流開發語言)bb3_1w36a;
$userBrowserInfo= $_SERVER["HTTP_USER_AGENT"];
$userIpAdd=$_SERVER["REMOTE_ADDR"];

//獲取表單的用戶名和密碼
$cmd_username=$_POST["username"];
$cmd_password=$_POST["password"];
//先跟CMS系統表驗證,如果通過.查詢相應用戶名BBS用戶表中的ID

$link=MySQL(和PHP搭配之最佳組合)_connect("localhost","root","");
MySQL(和PHP搭配之最佳組合)_select_db("cms");
$selectUid="select user_id from bbs_users where username=$cmd_username";
$uidResult=MySQL(和PHP搭配之最佳組合)_query($selectUid);
$userId=null;
while($row1 = MySQL(和PHP搭配之最佳組合)_fetch_array($uidResult, MySQL(和PHP搭配之最佳組合)_NUM))
{
 $userId=$row1[0];
}
//echo $userId;
MySQL(和PHP搭配之最佳組合)_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);

//往php(做為現在的主流開發語言)b_sessions表中插入Session信息
$link=MySQL(和PHP搭配之最佳組合)_connect("localhost","root","");
MySQL(和PHP搭配之最佳組合)_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(和PHP搭配之最佳組合)_query($sqlcommand);
MySQL(和PHP搭配之最佳組合)_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);
?>

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

當然,只有這些還是不夠,還要屏蔽php(做為現在的主流開發語言)BB中的用戶修改賬戶信息和注冊新用戶.比如要修改注冊的,可以修改

php(做為現在的主流開發語言)bb3rc2stylesprosilver emplate這個目錄下面的.ucp_register.html模版面.把裡面的內容的刪了.加上這個

<script type="text/javascript" language="javascript">
  window.location=member.php(做為現在的主流開發語言);
</script>

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

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

當在網站上注冊用戶時,同時往php(做為現在的主流開發語言)BB數據庫的users表和user_group表中插入用戶信息.記住,一定要看看分組啊,

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved