Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpBB会话集成:在函数中使用数据_Php_Function_Session_Integration_Phpbb - Fatal编程技术网

phpBB会话集成:在函数中使用数据

phpBB会话集成:在函数中使用数据,php,function,session,integration,phpbb,Php,Function,Session,Integration,Phpbb,我正在尝试将phpBB3会话和数据集成到外部网站中。我已经遵循了这个原则,也读了一些,但我还没有找到一个具体的解决方案,我的问题 在我的站点中,我包含一个phpbb.php,其中包含以下代码: <?php define('IN_PHPBB', true); $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../forums/'; $phpEx = substr(strrchr(__FILE__,

我正在尝试将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();
?>
这将根据用户是否登录论坛,在我使用的模板系统中加载不同的模板,如果用户登录论坛,它还会打印他的用户名。所有这些都很好

然而,问题是当我尝试使用函数时:

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 ]";
    }
}
函数打印\u登录(){
如果($user->data['user\u id']==匿名)
{
返回“当前未登录。[登录]”;
}
其他的
{
如果($user->data['user\u color']!=null)
{
返回“Hello,data['user\u color']”“\”>“$user->data['username']”。[注销]”;
}
否则返回“Hello,”.$user->data['username']。“[logout]”;
}
}
如果我这样做,即使函数位于包含phpbb.php的页面上,或者甚至在phpbb.php内部,会话也不会被识别,结果总是:

你好。[注销]


为什么我定义的函数不能访问phpBB数据?

PHP变量必须引用全局变量,因为

<?php
$a = 2;

function test() {
  echo $a;
}
?>

嗯,我也读过类似的东西:“记住,如果你通过函数或对象登录,通过全局/全局函数将其包含进来,那么$auth变量/类在所述函数/对象中是可用的。”但是我没有完全理解它,添加“global$user;”行,甚至添加一个额外的“global$auth”行也没有任何作用。也没有向函数添加参数并向其传递$user。结果保持不变你能找到用户的类别(在phpbb包含的文档中)?它很长,所以我把它放在一个粘贴箱中:这里还有一些文档:我发现了问题。这是因为我在phpbb.php之后包含了我的db.php,其中包含了与我的站点MySQL数据库相关的代码。php还使用$user变量,该变量导致与phpBB代码冲突。将您的建议与全局变量一起使用,然后按预期修复问题。非常感谢!:)很高兴我能帮忙。
<?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 ]";
    }
...