外部网站中的phpbb导航栏

外部网站中的phpbb导航栏,php,forum,phpbb,phpbb3,forums,Php,Forum,Phpbb,Phpbb3,Forums,我的网站集成了phpbb3 我在我的标题网页中有登录名,如中所述 所有的作品都很好,但我想更进一步,我想有我的网站标题导航栏,然后我可以看到我的网站标题新的消息和用户配置文件。 我正在使用以下代码: <?php define('IN_PHPBB', true); $phpbb_root_path = '../phpbb3/'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path

我的网站集成了phpbb3

我在我的标题网页中有登录名,如中所述

所有的作品都很好,但我想更进一步,我想有我的网站标题导航栏,然后我可以看到我的网站标题新的消息和用户配置文件。 我正在使用以下代码:

    <?php
define('IN_PHPBB', true);
$phpbb_root_path = '../phpbb3/';
$phpEx           = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

?>  


<div class="registro">

<?php
if ($this->_rootref['S_USER_LOGGED_IN']) {
?>

<div class="navbar" style="background-image:url('../img/opaco.png');">
     <div class="inner"><span class="corners-top"><span></span></span>



     <?php
    if (!$this->_rootref['S_IS_BOT'] && $this->_rootref['S_USER_LOGGED_IN']) {
?>

     <ul class="linklist leftside">
        <li class="icon-ucp">
           <a href="<?php
        echo (isset($this->_rootref['U_PROFILE'])) ? $this->_rootref['U_PROFILE'] : '';
?>" title="<?php
        echo ((isset($this->_rootref['L_PROFILE'])) ? $this->_rootref['L_PROFILE'] : ((isset($user->lang['PROFILE'])) ? $user->lang['PROFILE'] : '{ PROFILE }'));
?>" accesskey="e"><?php
        echo ((isset($this->_rootref['L_PROFILE'])) ? $this->_rootref['L_PROFILE'] : ((isset($user->lang['PROFILE'])) ? $user->lang['PROFILE'] : '{ PROFILE }'));
?></a>
              <?php
        if ($this->_rootref['S_DISPLAY_PM']) {
?> (<a href="<?php
            echo (isset($this->_rootref['U_PRIVATEMSGS'])) ? $this->_rootref['U_PRIVATEMSGS'] : '';
?>">
<?php
            echo (isset($this->_rootref['PRIVATE_MESSAGE_INFO'])) ? $this->_rootref['PRIVATE_MESSAGE_INFO'] : '';
?></a>)<?php
        }
        if ($this->_rootref['S_DISPLAY_SEARCH']) {
?> &bull;

           <?php
        }
?>

        </li>
     </ul>
     <?php
    }
?>


     <ul class="linklist rightside">

        <?php
    if (!$this->_rootref['S_IS_BOT']) {
        if ($this->_rootref['S_DISPLAY_MEMBERLIST']) {
?><?php
        }
        if (!$this->_rootref['S_USER_LOGGED_IN'] && $this->_rootref['S_REGISTER_ENABLED'] && !($this->_rootref['S_SHOW_COPPA'] || $this->_rootref['S_REGISTRATION'])) {
?><li class="icon-
register"><a href="<?php
            echo (isset($this->_rootref['U_REGISTER'])) ? $this->_rootref['U_REGISTER'] : '';
?>"><?php
            echo ((isset($this->_rootref['L_REGISTER'])) ? $this->_rootref['L_REGISTER'] : ((isset($user->lang['REGISTER'])) ? $user->lang['REGISTER'] : '{ REGISTER }'));
?></a></li><?php
        }
?>

           <li class="icon-logout"><a href="<?php
        echo (isset($this->_rootref['U_LOGIN_LOGOUT'])) ? $this->_rootref['U_LOGIN_LOGOUT'] : '';
?>" title="<?php
        echo ((isset($this->_rootref['L_LOGIN_LOGOUT'])) ? $this->_rootref['L_LOGIN_LOGOUT'] : ((isset($user->lang['LOGIN_LOGOUT'])) ? $user->lang['LOGIN_LOGOUT'] : '{ LOGIN_LOGOUT }'));
?>" accesskey="x">
<?php
        echo ((isset($this->_rootref['L_LOGIN_LOGOUT'])) ? $this->_rootref['L_LOGIN_LOGOUT'] : ((isset($user->lang['LOGIN_LOGOUT'])) ? $user->lang['LOGIN_LOGOUT'] : '{ LOGIN_LOGOUT 
}'));
?></a></li>
        <?php
    }
?>

     </ul>

     <span class="corners-bottom"><span></span></span></div>
  </div>


<?php
} else
//user is not logged in  
    {
    include('loginGeneral.php');
    // this is a login form
}
?>      


</div>   


如果用户未注册,我将使用自定义登录表单,但是如果用户已注册,我将显示带有一些修改内容的导航栏

当我在我的网站的phpbb3菜单中时,该代码起作用。我的意思是,当我在论坛内冲浪时,我可以在我的网站标题中显示导航栏,但当我在我的主页中时,我会看到

致命错误:在第2行的C:\wamp\www\esp\cabecera.php中不在对象上下文中时使用$this

我认为该文件可能会加载一些文件并在整个代码中更改$this->\u rootref,但我有点迷路了

编辑:我仍然被这个困扰着,有人能帮我吗?我想我必须用$\u rootref替换$this->\u rootref,并可能添加一些include,但我不知道是哪个。
谢谢你的帮助,因为你的网站没有面向对象的编程功能

这是一个很好的论坛,不需要声明变量
\u rootref

大多数facil seria ver quéobjecto es
$this
en ese contexto y llamarlo directement con PHP desde fuera,在usar面向对象的情况下,平均声明一个变量
\u rootref['S_USER_LOGGED_IN']
y usar eso directement

这是一个很好的例子,因为它是一个很好的例子,它是一个很好的例子

(英文)

可能有点晚了,但是
$this->
使用面向对象编程引用了该页面中声明的对象。该对象只存在于该上下文中,而不像在其他非phpbb页面中那样存在于该上下文之外,因此无论发生什么情况,您都会遇到该错误

我没有仔细研究代码,但它可能指的是论坛对象或任何包含
\u rootref
变量的对象

最简单的方法可能是找出该上下文中this所指的对象,并尝试从外部页面调用该对象。或者找出
\u rootref['S\u USER\u LOGGED\u IN']
的声明位置,并在页面或其变体中使用该函数

您可以尝试在该页面上回显它:
echo$this->\u rootref
查看它是否存在,或者
echo$this->\u rootref['S\u USER\u LOGGED\u IN']
如果不存在。除此之外,请在项目中查找
\u rootref['S\u USER\u LOGGED\u IN']
,以查看它的声明位置


希望这对别人有帮助

上面的代码是你的
cabecera.php
ad,它是
第2行
这个代码是我的cabecera.php,对不起,我不明白你的意思。我的cabecera.php中已经有了这段代码,因为它是cabecera.phpmuchimas gracias!马斯瓦勒塔德克努卡;)