我有一个使用phpBB的论坛。现在我想从源代码中做这样的事情:
登录(“用户”,“密码”)
如何在phpBB中执行此操作?
答案 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:
您可能有兴趣使用一些已有的库来促进这一点。
例如,您可以查看Zend_Http_Client
(see also;关于Sending Multiple Requests With the Same Client的部分可能会让您感兴趣;-))
您可能还想看看其他一些问题/答案,例如: