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



我有一个使用phpBB的论坛。现在我想从源代码中做这样的事情:

登录("用户","密码")

如何在phpBB中做到这一点?

首先你需要引导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_create将为用户设置会话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();
?>

然后,查看$auth->login()函数(示例使用在/includes/functions.php中的login_box()函数中)。一个简单但不完整的例子是:

$result = $auth->login($username, $password); // There are more params but they're optional
if ($result['status'] == LOGIN_SUCCESS)
{
    // Logged in
}
else
{
    // Something went wrong
}

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

  • POST数据,就像在填写表单
  • 从服务器获取应答;可能会提取会话的cookie
  • 为后续请求发送这些cookie

您可能有兴趣使用一些已经存在的库来实现这一点。
例如,您可以查看Zend_Http_Client(参见;关于使用同一客户端发送多个请求的部分可能会让您感兴趣;-))


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

    如何编写一个简单的PHP bot?
  • 如何从PHP的web服务器接收HTTP cookie ?

最新更新