在我的站点中使用PHPBB2登录凭据

在我的站点中使用PHPBB2登录凭据,php,login,credentials,phpbb,Php,Login,Credentials,Phpbb,我目前正在为我的一个站点的一部分使用PHPBB2论坛,我想扩展这个站点(添加新页面、脚本等)。我想限制已经登录PHPBB2论坛的用户访问这些页面 事实上,如果只有某个成员组的成员可以访问这些页面,那就太好了 有没有办法在我的站点的其余部分使用相同的登录凭据,并检查成员来自哪些组 谢谢 (顺便说一下,这些页面是用PHP编写的)在其他页面中使用PHPBB2的用户表及其登录和权限代码。它很脏,但能用 通过使用PHPBB2的代码,我的意思是: 深入研究PHPBB2的代码,找出PHPBB2如何认证用户,并

我目前正在为我的一个站点的一部分使用PHPBB2论坛,我想扩展这个站点(添加新页面、脚本等)。我想限制已经登录PHPBB2论坛的用户访问这些页面

事实上,如果只有某个成员组的成员可以访问这些页面,那就太好了

有没有办法在我的站点的其余部分使用相同的登录凭据,并检查成员来自哪些组

谢谢


(顺便说一下,这些页面是用PHP编写的)

在其他页面中使用PHPBB2的用户表及其登录和权限代码。它很脏,但能用

通过使用PHPBB2的代码,我的意思是:

深入研究PHPBB2的代码,找出PHPBB2如何认证用户,并复制相关的代码块。如果PHPBB2的结构合理,您可能只需要在PHPBB2中包含几个文件,就可以使用它们,而无需进行大量的黑客操作。如果它没有很好的结构,它将是肮脏和丑陋的


别忘了测试你网站上新添加的安全内容!确保您的黑客操作正确。

如果用户登录到PHPBB,则很有可能(尽管不太可能)他们会有一个cookie,您可以读取并帮助检查数据库中的谁是谁

在这种情况下,您需要在下面打碎饼干屑:

$_COOKIE["phpbb2mysql_data"]
让我们使用一个示例并将其展开,以查找需要查询的数据库数据。以下是在上述cookie中找到的区块:

a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"3";}
为此,您需要进入并提取与登录的PHPBB用户对应的“3”

要拉出该用户id,请执行以下操作:

 $goo = unserialize($_COOKIE["phpbb2mysql_data"]);
 $extracted_id = $goo["userid"];
(感谢您指出上述cookie的序列化形式)

在数据库中运行该数字可以检查该成员属于哪个组。您将对
phpbb_user_组
表运行检查(如果您将phpbb_作为论坛表的前缀)

如果不想从数据库中跟踪组ID,则需要对名称进行某种类型的连接和测试。也许是这样的:

SELECT pug.user_id FROM phpbb_user_group pug 
 LEFT JOIN phpbb_groups g 
 ON pug.group_id=g.group_id
 WHERE pug.user_id='$extracted_id'
 AND g.group_name='Foo';

如果您可以从中抽出一行,那么您发现自己是属于该Foo组的登录用户。

您可以直接使用phpbb2的用户和组表。我记得,password列只是实际密码的md5()


这一技巧在phpBB3中不再有效,因为密码(最终)是咸的。

我不记得phpBB2是否有此功能,但phpBB3有一个记录在案的API用于登录和执行相关任务。如果您不知道,该cookie包含一个序列化数组。您应该使用php的unserialize()函数来提取数据。感谢您在序列化数据上的指针,经过编辑的答案使生活更轻松。