因為工作的原因.要用到這個,所以研究了一下.
主要思路是模擬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中的用戶修改帳戶資訊和註冊新用戶.比如要修改註冊的,可以修改
phpbb3rc2stylesprosilvertemplate這個目錄下面的.ucp_register.html模版面.把裡面的內容的刪了.加上這個
<script type="text/javascript" language="javascript">
window.location='member.php';
</script>
這樣,當用戶點註冊,閱讀完條款後點註冊,就會跳到網站上的註冊頁面.修改信息的大體一樣..
我的作法並沒有統一用戶表.而是各有各的使用者係統..
當在網站上註冊使用者時,同時往PHPBB資料庫的users表和user_group表中插入使用者資訊.記住,一定要看看分組啊,
權限,插入對應的東西,要不然可能不能登入,不改發訊息,不能讀版塊等問題.這份比較長簡單,程式碼就省了.主要是登錄部份..