我有一个使用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 ?