gpt4 book ai didi

phpBB session 集成 : using data in function

转载 作者:搜寻专家 更新时间:2023-10-31 20:43:25 25 4
gpt4 key购买 nike

我正在尝试将 phpBB3 session 和数据集成到外部网站中。我关注了 official resource为此,还阅读了一些helpful tips ,但我还没有找到解决问题的具体方法。

在我的站点中,我包含了一个包含以下代码的 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 本身内部, session 也不会被识别,结果将始终是:

Hello, . [ Log out ]

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

最佳答案

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 ]";
}
...

关于phpBB session 集成 : using data in function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com