Интеграция сеанса phpBB: использование данных в функции
Я пытаюсь интегрировать сеансы phpBB3 и данные на внешний веб-сайт. Я следил за официальным ресурсом для этого, а также прочитал некоторые полезные советы, но я не нашел конкретного решения своей проблемы.
На свой сайт я включаю phpbb.php который содержит следующий код:
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../forums/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
?>
Корневой путь настроен нормально, кажется, все работает, и я могу использовать данные на сайте с таким кодом (пример):
if ($user->data['user_id'] == ANONYMOUS)
{
$tpl = new USPTemplate();
$tpl->load("error_nologin.tpl");
$tpl->display();
}
else
{
$tpl = new USPTemplate();
$tpl->load("review_submit.tpl");
$tpl->assign("test",'Thanks for logging in, ' . $user->data['username']);
$tpl->display();
}
Это было бы загружайте различные шаблоны с помощью системы шаблонов, которую я использую, в зависимости от того, зарегистрирован ли пользователь на форуме, и если да, он также печатает свое имя пользователя. Все это работает просто отлично.
Проблема, однако, заключается в том, когда я пытаюсь использовать функцию:
function print_login() {
if ($user->data['user_id'] == ANONYMOUS)
{
return "Not currently logged in. [ Log in ]";
}
else
{
if ( $user->data['user_colour'] != null)
{
return "Hello, <b style=\"color: #".$user->data['user_colour']."\">".$user->data['username']."</b>. [ Log out ]";
}
else return "Hello, ".$user->data['username'].". [ Log out ]";
}
}
Если я сделаю это, даже если функция находится на странице, которая включает phpbb.php, или даже внутри phpbb.php сам по себе сеанс не будет распознан, и результатом всегда будет:
Здравствуйте,.[ Выйдите из системы]
Почему функции, которые я определяю, не могут получить доступ к данным phpBB?
1 answers
Переменные PHP должны ссылаться на глобальные переменные, потому что
<?php
$a = 2;
function test() {
echo $a;
}
?>
Не будет работать, и
<?php
$a = 2;
function test() {
global $a;
echo $a;
}
?>
Будет работать.
Для того, чтобы ваша функция работала, вы должны объявить глобальные переменные внутри:
function print_login() {
global $user;
if ($user->data['user_id'] == ANONYMOUS)
{
return "Not currently logged in. [ Log in ]";
}
...