Prozess zur Loginseite ändern

A

adlershof

Ich habe vor einiger Zeit ein CMS entwickelt, welches auf meiner Arbeit benutzt wird. Aktuell bekommt man das Login Formular auf der index.php Seite des CMS. Wenn man sich eingeloggt hat, hat man dann die Auswahl zwischen einer Vollversion des CMS und einer Beta Version. Die Übersichtsseite mit Zugang zur Beta Version möchte ich jetzt gern abschaffen. Da das CMS mit den Funktionen zur täglichen Arbeit jetzt ausgereizt ist.

Bei der neuen Version soll man auf die Login Seite weitergeleitet werden, wenn man noch nicht eingeloggt ist. Nun habe ich bei der Loginseite die Header und Footer Datei wie auf der Index Seite eingefügt. In der Header Datei lasse ich prüfen, ob die Session bereits existiert. Wenn Sie nicht existiert, folgt eine Weiterleitung zur Loginseite. Dort bekomme ich eine Fehlermeldung, dass zu viel Weiterleitungen existieren würden.

Wie muss ich diesen Prozess programmieren, damit ich bei der Weiterleitung keinen Fehler bekomme?
 
Wahrscheinlich hast du irgendeinen "header-Fail" gebaut, also zB:
A leitet an B weiter und B leitet an A weiter. Diese Endlosschleife wird von den meisten browsern erkannt und unterbrochen (Fehlermeldung). Durchsuch mal deinen Code, ob sowas bei dir vorliegt. Vielleicht hilft dir dabei auch die webdevelopper extension - bei der siehst du, von wo du nach wo weitergeleitet wirst.
 
Also diese Abfrage steckt in der header Datei, welche in der Index und Login Datei mit include eingefügt ist.

PHP:
if(!isset($_SESSION['logged_in'])) {    header('Location: login.php');    exit;}

Kann dadurch in der Login Datei eine Endlosschleife entstehen, wie du schreibst?
 
der oben genannte header ist der einzigste, um der ursache auf den grund zu gehen.
 
Ach, jetzt habe ich das gelesen. Das scheint schon das problem zu sein!

Überleg mal, was passiert:
-Du rufst ohne Session die Index seite auf
-Du wirst weitergeleitet auf login.php mit includetem header.php
-Du wirst erneut weitergeleitet auf login.php, die immernoch die header.php includet
-Du wirst erneut weitergeleitet auf login.php, die immernoch die header.php includet
-Du wirst erneut weitergeleitet auf login.php, die immernoch die header.php includet
-Du wirst erneut weitergeleitet auf login.php, die immernoch die header.php includet
-Du wirst erneut weitergeleitet auf login.php, die immernoch die header.php includet
...

Du siehst das problem?
 
Ja, ich sehe das Problem. Beim Eröffnungspost hatte ich auch bereits nachgefragt wie ich das anders machen kann, damit dieser Fehler weg kommt. Denn dies scheint auch ein Fehler in meiner Denkweise zu sein, so dass ich da auch umdenken muss.

Edit
Ich müsst und sollt mir auch keinen Code vorschreiben, sondern am liebsten Tipps gehen wie ich mit der Login umzugehen habe. Denn ich habe mir auch andere Skripts angesehen, die diese Weiterleitung in die Login auch includen, aber wo dies anders verarbeitet wird. Skripte wie Cunity oder WH Board
 
Zuletzt bearbeitet von einem Moderator:
Hallo adlershof,
mir ist es so bekannt das eine Abfrage zur Session existenz besteht.
Wenn diese nicht vorhanden ist wird das Formular und die dahinter
steckende Routine eingebunden. (via Include,....)
Sollte die Session existieren wird eine Weiterleitung zu der
eigentlichen Seite vorgenommen. (via header(.....) )
z.B.
PHP:
if(!isset($_SESSION['logged_in']))
{
    include("login.php");
    include("login-routine.php");
}
else
{
    header('Location: index.php');
    exit;
}
 
Zurück