使用PhpBB会话数据的应用程序 - 不能使用短代码
-
07-07-2019 - |
题
我在使用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方法的方法的人。
基本上,我需要做的就是:
- 确保用户已登录
$ user-> data [username] == Anonymous
- 利用'$ user->数据'中的数据,例如用户的ID,屏幕名称等。 醇>
我可以抓住 $ user-> data
数组,并以某种方式将其保存到我自己的会话中吗?有没有人对此有任何想法?提前谢谢!
解决方案
你遇到了我讨厌框架工作的主要原因。 你永远不知道包含什么。特别是当代码不是面向对象的时候。 (如果你的函数属于对象,而不是在全局空间中自由浮动,那就更好了。)
假设您的代码已经定义了会话处理程序,那么就没有什么能阻止您使用常规会话命令。
例如: $ _SESSION ['user_data_array'] = $ user-> data;
然后使用会话数据
$ data = $ _SESSION ['user_data_array'];
编写会话处理程序时,它将替换当前的会话处理程序。 (我假设已经完成,因此会话存储在数据库中,而不是存储在服务器上。)
如果没有被替换,那么您仍然可以使用PHP的默认会话处理程序。请记住,会话详细信息将保存到当前Web服务器上的文件夹中。因此,如果您的应用程序在多个服务器上运行,则如果用户在后续访问中由其他服务器提供服务,则会话数据将不可用。 (因此需要编写会话处理程序以保留多个服务器之间的会话数据。)
其他提示
phpBB将用于验证存储在数据库中的密码的算法从版本2.x更改为3.0。 (它曾经只是一个MD5功能。)但是如果你能找到他们的半SDK网址(手头没有它)那里有关于如何在比你描述的更高抽象级别使用他们的用户验证的帖子
在这种情况下,如果您要点击他们的资源,您需要按照自己的方式进行操作(在这种情况下,它比过去更明确。)
我同意这是一个冒险的决定;特别是因为phpBB没有特别令人钦佩的设计质量记录。