如何以编程方式登录phpBB论坛?

如何以编程方式登录phpBB论坛?,php,mysql,integration,phpbb,Php,Mysql,Integration,Phpbb,我有一个使用phpBB的论坛。现在,我想从源代码中执行如下操作: 登录(“用户”、“密码”) 如何在phpBB中执行此操作?在通过HTML爬行的PHP脚本中,需要: 发布数据,就像它正在填写表单一样 从服务器获取答案;可能会提取会话的cookie 为后续请求发送这些cookie 您可能有兴趣使用一些已经存在的库来实现这一点。 例如,您可以查看(;关于的部分可能会引起您的兴趣;-)) 您可能还想看看其他一些问题/答案,如: 您需要一个与phpBB框架集成的脚本。这样的办法应该行得通 &

我有一个使用phpBB的论坛。现在,我想从源代码中执行如下操作:

登录(“用户”、“密码”)


如何在phpBB中执行此操作?

在通过HTML爬行的PHP脚本中,需要:

  • 发布数据,就像它正在填写表单一样
  • 从服务器获取答案;可能会提取会话的cookie
  • 为后续请求发送这些cookie
您可能有兴趣使用一些已经存在的库来实现这一点。
例如,您可以查看(;关于的部分可能会引起您的兴趣;-))


您可能还想看看其他一些问题/答案,如:


您需要一个与phpBB框架集成的脚本。这样的办法应该行得通

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>

首先,您需要为phpBB引导:

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './phpBB/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

$user->session_begin();
您必须将
/phpBB/
部分替换为论坛的相对路径

要让用户登录,您必须执行以下操作:

$result = $user->session_create($user_id, $admin, $autologin, $viewonline);
$admin
可能应该是
false
$autologin
$viewonline
取决于您想要什么


注意:调用
session\u create
将为用户设置会话cookie,因此请确保仅在当前请求实际为该用户服务时调用该cookie。

不确定这与phpBB有何关系?问题是:“如何以编程方式登录phpBB论坛?”。这是一个很好的一般性回答,解释了这一点。@budwiser-问题是如何登录到phpBB,而不是如何登录到任何远程web应用程序。所以,它不太适合phpBB,尤其是当有一个API可用时,这个答案是关于抓取HTML和远程身份验证。(OP的问题明确说明需要本地身份验证解决方案)这并不能回答OP的问题,因为您的解决方案不接受用户的用户名/密码来登录,而是强制使用特定的
$user\u id
登录。公平地说,我在细节上做得有点过火了。不管怎样,我会把我的答案留在这里,因为我已经付出了一些努力。也许有一天会对某人有所帮助。我知道这已经很晚了,但非常感谢你做出留下答案的决定,因为这是我找到的唯一一个解决方案,可以解决如何只使用用户ID而不使用密码登录用户的问题。对于想办法更改登录用户的人,你也可以用类似的方式来完成<代码>$user->session_kill()$用户->会话\u创建($newUserID,false,true)$auth->acl($user->data)在我的脚本执行一些自动发布之前,我使用此命令切换到一个匿名用户(userid=1),然后切换回原始用户(切换之前我存储了谁的userid)。
$result = $user->session_create($user_id, $admin, $autologin, $viewonline);