PHPBB3跟网站结合,实现登入网站同时登入论坛
Jun 13, 2016 am 10:31 AM
因为工作的原因.要用到这个,所以研究了一下.
主要思路是模拟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表中插入用户信息.记住,一定要看看分组啊,
权限,插入相应的东西,要不然可能不能登入,不改发信息,不能读版块等问题.这部份比较长简单,代码就省了.主要是登入部份..

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

What causes WPS Office to be unable to start a print job?

How to implement dual WeChat login on Huawei mobile phones?

Comprehensive Guide to PHP 500 Errors: Causes, Diagnosis and Fixes

Why is Apple mobile phone charging so slow?

How to implement the WeChat clone function on Huawei mobile phones

What is the reason why the wifi function cannot be turned on? Attachment: How to fix the wifi function that cannot be turned on

PHP Programming Guide: Methods to Implement Fibonacci Sequence

PHP Game Requirements Implementation Guide
