Heim >php教程 >php手册 >PHPBB3跟网站结合,实现登入网站同时登入论坛

PHPBB3跟网站结合,实现登入网站同时登入论坛

WBOY
WBOYOriginal
2016-06-13 10:31:101204Durchsuche

因为工作的原因.要用到这个,所以研究了一下.

主要思路是模拟COOKIES ..先往Cookies里面插入用户ID和一个SessionID,然后再往数据库中的sessions表里面插入SessionID,和用户ID,如果打开论坛,系统会验证COOKIES的信息跟数据库中的信息是否一样,如果一样的话就可以实现自动登入..登入部份主要代码如下:

(做为现在的主流开发语言)
//获取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模版面.把里面的内容的删了.加上这个

这样,当用户点注册,阅读完条款后点注册,就会跳到网站上的注册页面.修改信息的大体一样..

我的作法并没有统一用户表.而是各有各的用户系统..

当在网站上注册用户时,同时往php(做为现在的主流开发语言)BB数据库的users表和user_group表中插入用户信息.记住,一定要看看分组啊,

权限,插入相应的东西,要不然可能不能登入,不改发信息,不能读版块等问题.这部份比较长简单,代码就省了.主要是登入部份..

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn