phpbb3结合自己网站实现session登陆
来源:互联网 发布:淘宝版阿里旺旺下载 编辑:程序博客网 时间:2024/04/30 10:49
又是新的一年了,2013,在这里祝大家元旦快乐!!
正题,phpbb3是一个很不错的php论坛,界面也很不错,性能也好
但我想让它和我的网站整合在一起,用户数据完全就用论坛的数据,怎么弄呢
去谷歌搜了几天,发现都只有2010年和2007年的帖子,来自phpbb的官网
这个网址是:https://www.phpbb.com/kb/article/phpbb3-cross-site-sessions-integration/
其实说的也很明确了,只是本人初用phpbb,不太熟悉环境
这里只实现了登陆,却没有完成登陆,因为url缺少一个session id
即url上的sid=......
例如:http://localhost/phpBB3/index.php?sid=4de4ef4b260097b0ce6f0852908bd26d
当然也可以自己去动态生成一个sid,网上也有方法,但我没有测试过,等有时间再补上
后来又去找了下,找到一个比较靠谱的
http://www.freewebcomponent.com/sample/phpBB/Login/phpBB_Integration_in_our_own_website.html
但后来又发现竟然不需要密码直接登陆。。。囧了
由于代码比较简洁,就直接在他的基础上加入了密码验证
首先假设我们的根目录是 localhost/phpBB3/
文件名1:auth_ok.php 路径: localhost/phpBB3/includes/auth/
这个文件用于重载系统的一个函数:
文件内容如下:
<?phpfunction login_ok(&$username, &$password){global $db, $config;$sql = 'SELECT user_id, username, user_password, user_passchg, user_pass_convert, user_email, user_type, user_login_attemptsFROM ' . USERS_TABLE . "WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";$result = $db->sql_query($sql);$row = $db->sql_fetchrow($result);$db->sql_freeresult($result);return array('status'=> LOGIN_SUCCESS,'error_msg'=> false,'user_row'=> $row,);}?>
文件名2:class.phpBB.php 路径: localhost/phpBB3/includes/
这里是现实功能的主要文件,里面写了一个类,用于登陆和注册
文件内容如下:(这里对原作者的代码进行了部分修改)
<?php/*------------------------------------------------------------------------------------- Script Name: class.phpBB.php Script Version: 1.0 Author: Tony Wei ( tonywei123@gmail.com ) Blog: www.FreeWebComponent.com Description: phpBB operation Revision History: 1.0: original version 2010/4/18-------------------------------------------------------------------------------------*//*------------------------------------------------------------------------------------- Script Name: class.phpBB.php Script Version: 2.0 Author: Backgarden_Neo ( h20549304@gmail.com ) Blog: blog.csdn.net/backgarden_straw Description: phpBB operation of verification login Revision History: 1.0: original version 2010/4/18 2.0: first version 2013/1/1-------------------------------------------------------------------------------------*/// You may put phpBB directory name heredefine( "PHPBB_PATH", "phpBB3" );class phpBB {// -------------------------------------------------------------------------------------------------// Default constructor// -------------------------------------------------------------------------------------------------function phpBB(){ }// -------------------------------------------------------------------------------------------------// Login: Just pass username, than redirect to forum homepage// -------------------------------------------------------------------------------------------------function Login( $user_name,$user_password,$user_remember = true, $is_redirect = true ) {global $config, $user, $auth,$db;// do not allow empty passwordif (!$user_password){return array('status'=> LOGIN_ERROR_PASSWORD,'error_msg'=> 'NO_PASSWORD_SUPPLIED','user_row'=> array('user_id' => ANONYMOUS),);}if (!$user_name){return array('status'=> LOGIN_ERROR_USERNAME,'error_msg'=> 'LOGIN_ERROR_USERNAME','user_row'=> array('user_id' => ANONYMOUS),);}// Use login_ok function to override original login_db function in auth_db.php$config[ "auth_method" ] = "ok";// Start session management$user->session_begin();$auth->acl( $user->data );$user->setup( "ucp" );//进行一次选择,数据库里有的时候才进行登录$username_clean_name = utf8_clean_string($user_name);$username_clean_password = utf8_clean_string($user_password);$username_clean_remember = utf8_clean_string($$user_remember);$hash = phpbb_hash($username_clean_password);$sql = 'SELECT user_id,user_password FROM ' . USERS_TABLE . "WHERE username = '" .$user_name . "' ORDER BY user_id DESC LIMIT 1";$result = $db->sql_query($sql);$row = $db->sql_fetchrow($result);$db->sql_freeresult($result);if(phpbb_check_hash($username_clean_password,$row['user_password'])){$result = $auth->login( $user_name, $username_clean_password, $username_clean_remember, 1, 0 );$redirect = "/" . PHPBB_PATH . "/index.php";$redirect = reapply_sid( $redirect );header("Location:".$redirect);exit;}else{echo "your password is wrong,please check your passwrod!";}//}// -------------------------------------------------------------------------------------------------// Register: Create a new phpBB user// -------------------------------------------------------------------------------------------------function Register( $user_name, $user_password, $user_email ){echo $user_password;$user_row = array();$user_row["username"] = $user_name;$user_row["user_password"] = phpbb_hash( $user_password );$user_row["user_email"] = $user_email;$user_row["group_id"] = "2";$user_row["user_timezone"] = "8";// You may change default timezone here$user_row["user_dst"] = "0";$user_row["user_lang"] = "zh_cmn_hant";// You may change default language here$user_row["user_type"] = "0";$user_row["user_actkey"] = "";$user_row["user_ip"] = $_SERVER["REMOTE_ADDR"];$user_row["user_regdate"] = time();$user_row["user_inactive_reason"] = "0";$user_row["user_inactive_time"] = "0";$user_row["user_new"] = "1";$user_id = user_add( $user_row, array() );echo " ".$user_row["user_password"];}} // End of class phpBB?>
文件名3:login_session.php 路径 localhost/phpBB3/testphpbb/session/
文件内容如下:
<?phprequire_once("../phpbb.php");require_once( "../../includes/class.phpBB.php");$phpBB = new phpBB();$return_value = $phpBB->Login( "your name","your password");?>
文件名4:phpbb.php 路径: localhost/phpBB3/testphpbb/
这个phpbb.php主要用于完成环境变量和一些头文件的引用
主要内容如下:
<?phpdefine('ROOT_PATH', "../"); // map this dir to your own installation of phpbbdefine('IN_PHPBB', true);if (!defined('IN_PHPBB') || !defined('ROOT_PATH')) exit();$phpEx = "php";$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : ROOT_PATH . '../';include($phpbb_root_path . 'common.' . $phpEx);include($phpbb_root_path . 'config.' . $phpEx);include($phpbb_root_path . 'includes/functions_display.' . $phpEx);require_once( $phpbb_root_path . "includes/functions." . $phpEx );require_once( $phpbb_root_path . "includes/functions_user." . $phpEx );require_once( $phpbb_root_path . "includes/functions_module." . $phpEx );$user->session_begin();$auth->acl($user->data);$user->setup();$user->setup('viewforum');?>文件名5:register_demo.php 路径: localhost/phpBB3/testphpbb/session/文件内容如下:
<?require_once("../phpbb.php");require_once( "../../includes/class.phpBB.php");$phpBB = new phpBB();$phpBB->Register( "your name", "your password", "your email" );print "Register success!";?>这里只是实现了功能,至于具体怎么完成结合就需要自己考虑了,结合上之前获取帖子的功能
后面还要加入语法插件,syntax highlight的加入,当然有需要就再找,会陆续写文章的
ps:祝大家,元旦快乐~~
- phpbb3结合自己网站实现session登陆
- PHPBB3跟网站结合,实现登入网站同时登入论坛
- PHPBB3跟网站结合,实现登入网站同时登入论坛
- 使用session实现网站N天免登陆
- 使用session实现网站N天免登陆(转载)
- 使用php+session实现登陆
- session实现用户登陆功能
- 应用session对象实现登陆
- 实现ASP.NET网站之间的单点登陆(跨域共享Session)
- 网站实现微博登陆
- python实现网站登陆功能
- node.js中结合redis实现session
- C#.net cookie、session实现自动登陆
- PHP会话(Session)实现用户登陆功能
- 利用session技术实现 用户登陆 功能
- PHP会话(Session)实现用户登陆功能
- PHP会话(Session)实现用户登陆功能
- PHP SESSION之自动登陆的实现
- linux signal 处理机制
- XCode 4 的调试定位技巧
- Xcode 4.4中LLVM compiler 4.0带来的Objective-C新语法特性
- 如何创建一个类似 Instagram 的使用 Web Service 作后台的应用
- 无敌项目经理
- phpbb3结合自己网站实现session登陆
- 封装函数时候,函数内分配内存简单管理方法。
- NG
- How to Install Git on Ubuntu 12.04
- 设计模式之4.2 Spring bean容器以及怎么从xml当中读取配置信息
- LAMP学习之: linux常用命令_2
- 关于linux下的软链接与硬链接
- labManage项目小结3
- 关于linux下的查找命令