Existenz eine Session- variable immer positiv

Tucker

Erfahrenes Mitglied
Ich weiß nicht wo der Fehler steckt. Jedenfalls habe ich mich strickt an das Muster des Tutorials Loginsystem mit Sessions gehalten.

Trotz all dem kann jeder auf die Seiten Zugriff nehmen, die eigentlich geschützt werden sollen. Dem zu Folge fällt die folgende Abfrage immer positiv aus, als sie ist immer wahr:
PHP:
<?php 
session_start (); 
if (!isset ($_SESSION["user_id"]) )
{ 
  header ("Location: error.php?fehler=zugriff"); 
} 
?>

Kann es daran liegen, dassich die Seiten, wo ich diese Anwendung per include implementiere, ebenfalls in andere Seiten per inlcude implementiert habe?
 
Das glaube ich nicht. Es wird wohl eher daran liegen, dass die Variable $_SESSION['user_id'] bereits existiert. Vielleicht solltest du die Variable auf die Existenz eines Wertes überprüfen und ob dieser möglicherweise leer ist.
 
Ah ja, weiß aber mit deinen Worten nicht wirklich viel an zu fangen. Jetzt in der Testphase kann ich die Id ja noch auf einen Wert 0 z.B. überprüfen. Aber wie soll ich das dann bei mehrern Usern machen?
 
Ich kann ir noch eine andere Fehlerquelle vorstellen. Nehmen wir mal an, wir haben eine Datei A und eine Datei B und eine Datei C. Die Datei C stellt das obere Script dar. In Datei B ist ein include() Befehl für Datei C und in Datei A ist ein include() Befehl für Datei B.

Wenn ich nun Datei A ausführe, wird da Datei C vor demeinbetten der Datei B in Datei A in Datei B eingebettet oder erst danach?

Weil je nach dem ist der Pfad zu Datei C ja relativ.

Ich hoffe jemand weiß wie ich es meine.
 
Original geschrieben von Tucker
Ah ja, weiß aber mit deinen Worten nicht wirklich viel an zu fangen. Jetzt in der Testphase kann ich die Id ja noch auf einen Wert 0 z.B. überprüfen. Aber wie soll ich das dann bei mehrern Usern machen?


Das kannst du doch genauso bei mehreren Usern...schliesslich hat jeder seine eigenen Session-Vars.

Wie bereits erwähnt....irgendwo scheinst du die User-ID unbemerkt zu setzen....deklariere sie erst dann, wenn der User sich authentifiziert hat, und es sollte keine Probleme machen.
 
Also ich versteh es nicht. Ich habe mal einen Test gemacht,wo es mir die ID ausgeben soll. Es wird nichts ausgegeben undtrotzdemspringt das Script dort oben nicht an!

Warum?
 
isset() prüft, ob eine Variable deklariert ist.....wenn die Variable leer ist, wird dann aber trotzdem nix angezeigt.

Probier mal
PHP:
if (!isset($_SESSION["user_id"])||empty($_SESSION["user_id"]) ) 
{ 
  header ("Location: error.php?fehler=zugriff"); 
}
 
Danke, hab die ganze Sache jetzt ein bisschen umständlicher gelöst. Aber zumindestens funktioniert es jetzt.
 
Zurück