So, hab es nochmal weiter bearbeitet und den Fehler gefunden...
Ich hätte die Dateien nicht INNERHALB der Klasse includen sollen, da ich da dann keinen Zugriff auf Variablen außerhalb der Funktionen hab.
Hab jetzt alle includes durch "return" ausgetauscht und mit "include news->include_site();" geht's jetzt
Moin,
ich hab ein Problem bei der Integration des phpBB3 boards bzw. der Userdaten in meine Seite.
Die Userdaten werden in der index.php mit folgendem Code geladen
Code: Alles auswählen
// Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Session auslesen und Benutzer-Informationen laden
$user->session_begin();
$user->setup();
$auth->acl($user->data);
Ich habe ein dreispaltiges Layout, links die Navi, in der Mitte der Content und rechts noch eine Leiste wo noch Benutzerspezifische Informationen reinkommen. Dort ist auch im nicht eingeloggten Zustand die Loginbox, um mich über das phpBB3 einzuloggen, was auch wunderbar funktioniert.
Im eingeloggten Zustand (überprüft über "$user->data['user_id'] == ANONYMOUS") wird dann folgender Code verwendet.
Code: Alles auswählen
echo " <h1>Eingeloggt als <br /><em><a href=\"";
echo append_sid('./forum/memberlist.php?mode=viewprofile&u='.$user->data['user_id'])."\">";
echo $user->data['username']."</a></em></h1>\n";
Jetzt um Problem:
Im Contentbereich (also in der Mitte) wird per selbstgeschriebener Klasse die aktuelle Seite (z.B. news.php) includet über eine Abfrage der GET-Parameter, auch das klappt.
Merkwürdig ist jetzt, wenn ich in dieser includeten Seite Userdaten ausgeben will, geht das nicht, weil die Variable $user nicht mehr existiert!
Probiere ich ein "echo user->data['username']" erzeugt das folgenden Fehler:
Logischerweise wird der Username dann auch nicht angezeigt.[phpBB Debug] PHP Notice: in file <pfadzurseite>/home_news.php on line 6: Undefined variable: user
[phpBB Debug] PHP Notice: in file <pfadzurseite>/home_news.php on line 6: Trying to get property of non-object
Dachte erst das Problem würde entstehen, weil ich beim Klicken auf einen Link zum Adminbereich per "header('Location: admin.php'); umleite und dabei die Session verlorengeht, aber außerhalb des includeten Contents kann ich auch hier den Username ausgeben und auch auf der "normalen" Seite, wo die Session ganz klar funktioniert, geht es nicht mehr im Include.
Wer kann mir helfen ? Schonmal vielen Dank !
EDIT: Ich bin gerade mal auf die Idee gekommen, die Navigation mal auszuschalten und einfach mal eine Seite mit "include './sites/home_news.php';" includet und siehe da, dort kennt er die Variable..Jetzt versteh ich echt überhaupt nichtsmehr, in meiner Klasse dafür wird die Seite ebenso includet, es wird halt nur gecheckt, ob es die Seite, die per GET-Parameter angeben ist, überhaupt gibt oder nicht.
Ich häng mal die betreffende Funktion aus der Klasse an, allerdings kann ich mir echt nicht vorstellen, dass die irgendwas mit der $user Variable macht..
Code: Alles auswählen
function include_site()
{
if(!$this->get_s AND !$this->get_p)
{
include $this->include_path.$this->nav_links[1]['file'].".php";
}
elseif(!$this->get_p AND $this->get_s)
{
if($this->checkfortag($this->get_s) !== 0)
{
include $this->include_path.$this->nav_links[$this->checkfortag($this->get_s)]['file'].".php";
}
else
{
include $this->include_path.$this->error_page.".php";
}
}
elseif($this->get_p AND $this->get_s)
{
if($this->checkfortag($this->get_p) !== 0)
{
include $this->include_path.$this->nav_links[$this->checkfortag($this->get_p)]['file'].".php";
}
else
{
include $this->include_path.$this->error_page.".php";
}
}
else
{
if($this->checkfortag($this->get_p) !== 0)
{
include $this->include_path.$this->nav_links[$this->checkfortag($this->get_p)]['file'].".php";
}
else
{
include $this->include_path.$this->nav_links[1]['file'].".php";
}
}
}