[gelöst]$user auf einmal nichtmehr vorhanden

Fragen zur Bedienung von phpBB 3.0.x, Probleme bei der Benutzung und alle weiteren Fragen inkl. Update auf die neuste phpBB 3.0.14 Version
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
garchi
Mitglied
Beiträge: 3
Registriert: 24.03.2008 18:34

[gelöst]$user auf einmal nichtmehr vorhanden

Beitrag von garchi »

EDIT2:

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);
Soweit so gut.

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";
Auch das klappt, der Username wird wie gewollt angezeigt, also alles super.

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:
[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
Logischerweise wird der Username dann auch nicht angezeigt.
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";
      }
    }
  }
Antworten

Zurück zu „[3.0.x] Administration, Benutzung und Betrieb“