我目前正在为我网站的一部分使用 PHPBB2 论坛,我想扩展该网站(添加新页面、脚本等)。我想限制已经登录 PHPBB2 论坛的用户访问这些页面。
实际上,如果只有某个MemberGroup 的成员才能访问这些页面,那就太好了。
有没有办法在我网站的其余部分使用相同的登录凭据,并检查成员来自哪些组?
谢谢
(顺便说一下,这些页面是用 PHP 编写的)
最佳答案
如果用户登录到 PHPBB,则很有可能(尽管并非总是如此)他们将拥有一个 cookie,您可以读取该 cookie 并帮助对照数据库检查谁是谁。
在这种情况下,您需要打破下面的 cookie 面包屑:
$_COOKIE["phpbb2mysql_data"]
让我们用一个例子,把它吹出来,找到我们需要查询数据库的数据。以下是在上述 cookie 中找到的 block :
a:2:{s:11:"autologinid";s:0:"";s:6:"userid";s:1:"3";}
为此,您需要进入并提取恰好对应于已登录 PHPBB 用户的“3”。
Unserialize that data将该 user_id 拉出:
$goo = unserialize($_COOKIE["phpbb2mysql_data"]);
$extracted_id = $goo["userid"];
(感谢 epochwolf 指出该 cookie 的上述序列化形式)
该号码可用于对数据库运行以检查该成员属于哪个组。您将针对 phpbb_user_group
表运行检查(如果您将 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 组的登录用户。
关于php - 在我的站点中使用 PHPBB2 登录凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/630027/