session_start () - Probleme

Robert Steichele

Erfahrenes Mitglied
In meinem internen Bereich habe ich noch vor dem <html> Tag die Datei checkuser.php eingebunden. Diese überprüft ob die Variable $_SESSION["username"] existiert und leitet auf die indexlogin.php weiter, wenn sie nicht existiert. Dadurch werden die internen Datei nur geladen, wenn sich ein Benutzer angemeldet hat.

checkuser.php:
PHP:
  session_start ();

  if(!isset($_SESSION["username"])) {
    header("Location: indexlogin.php?error=2");
  }

Jetzt habe ich das Problem, dass die interne Navigation nicht angezeigt wird, wenn ich eine öffentliche Datei lade (Benutzer ist angemeldet). Deshalb möchte ich vor dem laden der internen Navi prüfen ob ein Benutzer angemeldet ist.
Um mit den öffentlichen Dateien Zugriff auf die Session-variablen zu bekommen habe ich in den öffentlichen Dateien anstatt der checkuser.php am Anfang die checksession.php eigebunden.

checksession.php:
PHP:
  session_start ();

Wenn ich jetzt allerdings ein öffentliche Datei lade (Benutzer ist angemeldet), erscheint folgende Fehlermeldung:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/htdocs/robert-steichele.de/agb.php:1) in /home/www/htdocs/robert-steichele.de/includes/checksession.php on line 3

Ich verstehe jetzt nicht ganz, warum die Meldung kommt wenn die checksession.php eingebunden ist und nicht, wenn die checkuser.php eingebunden ist. Bei beiden wird bereits vor dem <html> Tag die Session gestartet.
 
Hab den Fehler selbst gefunden, bei der öffentlichen Datei hatt ich vor <?PHP zwei Leerzeichen.
Ist zwar sonderbar, dass sowas Fehler verursacht, war aber die Lösung meines Problems.
 
Vor session_start(); darf keine HTML-Ausgabe stehen, da dieser bereits einen Header über HTTP absendet.
 
Zurück