1

在此之前,我使用 phpBB 会话和用户数据构建了 Web 应用程序。常见的做法是使用如下代码:

define('IN_PHPBB', true);
//replace $phpbb_root_path with path to your forum
$phpbb_root_path = '../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

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

但是,通过包含common.php,我带来了一大堆其他方法,这些方法会运行到我设置的其他方法中。

在我的示例中,我使用 CodeIgniter 运行应用程序,它已经具有“重定向”方法。这个问题应该适用于任何拥有可能遇到 phpBB 方法的预构建方法的人。

基本上,我需要做的就是:

  1. 确保用户已登录$user->data[username] == Anonymous
  2. 利用来自 '$user->data' 的数据,例如用户的 ID、屏幕名称等。

我可以抓住$user->data阵列,并以某种方式将其保存到我自己的会话中吗?有人对此有任何想法吗?提前致谢!

4

2 回答 2

1

你遇到了我讨厌框架的主要原因。你永远不知道包含了什么。特别是当代码不是面向对象的时候。(如果您的函数属于对象,而不是在全局空间中自由浮动,那就更好了。)

假设您的代码已经定义了会话处理程序,那么没有什么可以阻止您使用常规会话命令。

例如: $_SESSION['user_data_array'] = $user->data ;

然后稍后使用会话数据

$data = $_SESSION['user_data_array'];

编写会话处理程序时,它会替换当前的会话处理程序。(我假设已经完成,以便会话存储在数据库中,而不是服务器上。)

如果它没有被替换,那么您仍然可以使用 PHP 的默认会话处理程序。请记住,会话详细信息保存在当前网络服务器上的文件夹中。因此,如果您的应用程序跨多个服务器运行,如果用户在后续访问中由不同的服务器提供服务,则会话数据将不可用。(因此需要编写会话处理程序来保存多个服务器之间的会话数据。)

于 2008-11-10T23:40:49.293 回答
1

phpBB 将验证存储在数据库中的密码的算法从 2.x 版本更改为 3.0。(它曾经只是一个 MD5 函数。)但如果你能找到他们的半 SDK 网址(手头没有),那里有关于如何在比你描述的更高抽象级别上使用他们的用户验证的帖子.

在这种情况下,如果您要利用他们的资源,则需要按照他们的方式进行(在这种情况下,这比以前更加明确。)

我同意无论哪种方式都是一个冒险的决定。特别是因为 phpBB 在设计质量方面没有特别令人钦佩的记录。

于 2008-11-10T23:47:31.697 回答