0

我在我的网站中集成了 phpbb3。

我的标题网页中有登录信息,如https://wiki.phpbb.com/External_Login中所述。

一切正常,但我想更进一步,我想在我的网站标题中有导航栏,然后我可以在我的网站标题中看到新消息和用户配置文件。我正在使用这段代码:

    <?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->_rootref ,但我有点迷茫。

编辑:我仍然坚持这个,任何人都可以帮助我吗?我认为我必须用 $_rootref 替换 $this->_rootref 并可能添加一些包含但我不知道是哪个。谢谢

4

1 回答 1

0

Un poco tarde quizas, pero $this->se refiere al objeto que esta declarado, por eso no te funciona fuera del contexto, en tu site donde no existe ese objeto(面向对象编程)。

Lo mas seguro es que se refiera al objeto forum, donde esta declarada la variable_rootref

Lo mas facil seria ver qué objecto es $thisen ese contexto y llamarlo directamente con PHP desde fuera, sin usar Object Oriented o averiguar quien declara la variable _rootref['S_USER_LOGGED_IN']y usar eso directamente。

Puedes probar poniendo un echo $this-> _rootrefen en esa página para ver a que se traduce y tratar de usarlo luego, si te dice que no existe, tendras que ver donde esta declarado _rootref['S_USER_LOGGED_IN']y trabajar con eso。

(英语)

可能有点晚了,但$this->正在使用面向对象编程引用该页面中声明的对象。该对象仅存在于该上下文中,它不存在于它之外,就像在您的其他非 phpbb 页面中一样,因此无论如何您都会遇到该错误。

我没有仔细查看代码,但它可能指的是论坛对象或包含_rootref变量的任何对象。

最简单的做法可能是找出$this在该上下文中引用的对象并尝试从外部页面调用它。或者找出_rootref['S_USER_LOGGED_IN']声明的位置并在您的页面或其变体中使用该函数。

您可以尝试在该页面上回显它:echo $this->_rootref查看是否存在或echo $this->_rootref['S_USER_LOGGED_IN']不存在。除此之外,_rootref['S_USER_LOGGED_IN']在项目中查找它的声明位置。

希望这可以帮助某人。

于 2014-03-31T10:02:22.013 回答