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

时间:2011-11-10 13:40:09

标签: php mysql integration phpbb

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

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

如何在phpBB中执行此操作?

3 个答案:

答案 0 :(得分:10)

首先你需要为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。

答案 1 :(得分:8)

您需要一个与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()函数(示例用法位于login_box()中的/includes/functions.php函数中)。一个简单但不完整的例子是:

$result = $auth->login($username, $password); // There are more params but they're optional

if ($result['status'] == LOGIN_SUCCESS)
{
    // Logged in
}
else
{
    // Something went wrong
}

答案 2 :(得分:-1)

在您的PHP脚本中,需要抓取HTML:

  • POST数据,如果填写表格
  • 从服务器获取答案;可能会提取会话的cookie
  • 为后续请求发送这些Cookie

您可能有兴趣使用一些已有的库来促进这一点。
例如,您可以查看Zend_Http_Clientsee also;关于Sending Multiple Requests With the Same Client的部分可能会让您感兴趣;-))


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