我有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']) {
?> •
<?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菜单在我的网站,我的意思是,当我在论坛中冲浪,我可以显示导航栏在我的网站标题,但当我在我的主页,我得到
致命错误:在C:wampwwwespcabecera.php的第2行中,当不在对象上下文中使用$this
我认为文件可能会加载一些文件,并在整个代码中更改$this->_rootref,但我有点迷路了。
编辑:我仍然被这个困住了,有人可以帮助我吗?我认为我必须用$_rootref替换$this->_rootref,并可能添加一些包括,但我不知道哪一个。由于
面向对象编程(Object Oriented Programming,面向对象编程)
在面向对象编程(Object Oriented Programming,面向对象编程)中,per $this->
使用了特定的对象来进行声明,而在面向对象编程(objectoriented Programming,面向对象编程)中,不存在特定的对象。
在PHP设计的框架中,使用usar面向对象(Object Oriented)来声明变量_rootref['S_USER_LOGGED_IN']
,使用usar面向对象(Object Oriented)来声明变量CC_4,使用usar面向对象(Object Oriented)来声明变量CC_4。
Puedes probar poniendo un echo $this-> _rootref
en esa página para ver a que se traduce by tratar de usarlo luego,如果该dicute不存在,tendras que ver donde esta declarado _rootref['S_USER_LOGGED_IN']
y trabajar coneso。
(英语)
可能有点晚了,但是$this->
引用了使用面向对象编程的该页中的声明对象。该对象只存在于该上下文中,而不存在于该上下文中而不存在于其他非phpbb页面中因此无论如何,总是会得到这个错误。
我没有仔细看代码,但它可能指的是论坛对象或任何持有_rootref
变量的对象。
$this
在该上下文中引用的对象,并尝试从外部页面调用它。或者找出在哪里声明_rootref['S_USER_LOGGED_IN']
并在您的页面中使用该函数或它的变体。您可以尝试在该页:echo $this->_rootref
上回显它是否存在或echo $this->_rootref['S_USER_LOGGED_IN']
,如果不存在。除此之外,在项目中查找_rootref['S_USER_LOGGED_IN']
以查看它被声明的位置。
希望这能帮助到别人。