Hi!
Wenn sich ein Benutzer abmeldet, landet er auf der Seite loggedout.php, bei der sämtliche Session-Parameter gelöscht werden. Wenn der Benutzer dann den Zurück-Pfeil im Browser klickt, gelangt er wieder auf die Seite logged.php, die nun mit Fehlermeldungen übersät ist, da ja die Session nicht mehr existiert. Kann man das irgendwie vermeiden, um den User nicht zu verwirren?
Es gibt keinen roten Faden, den ein Besucher geht, auch wenn du das dir so vorgestellt hast. Du musst also stets mit jeder Art Request rechnen und jede Requestabarbeitung muss damit umgehen können, dass irgendwelche Daten fehlen, die gemäß deines roten Fadens vorhanden gewesen wären.
Meine Ideen:
- Zurück-Pfeil "deaktivieren" (falls das überhaupt geht)
- auf der 'logged.php' überprüfen, ob die Session noch gültig ist. Falls nicht: location-header oder Fehlermeldung ausgeben
Die erste Idee ist Unsinn, weil es zum einen nicht geht und zum anderen Requests sich nicht nach irgendwelchen Browserbedienelementen richten. Die andere Idee ist hingegen eine sinnvolle. Prüfe bei jedem Request, ob die notwendigen Voraussetzungen erfüllt sind und bring dann entweder den Inhalt oder die Möglichkeit, sich einzuloggen.
Allerdings ist ein Hin- und Her-Weiterleiten zu den jeweiligen Seiten keine schöne Angelegenheit. Versuch immer den Ablauf so zu gestalten, dass alles in einem Request erledigt werden kann. Dazu empfiehlt es sich, die Funktionsmodule zu kapseln und bei Bedarf in die Seite einzufügen, statt zu den Funktionen weiterzuleiten. Vielleicht so:
Allgemein:
Anmeldestatus: abgemeldet
Ist es ein Request mit Anmeldedaten
Wenn Daten stimmen
Anmeldestatus in Session festhalten
Wenn gültige Anmeldedaten in der Session
Anmeldestatus: angemeldet
An der Stelle, an der die Anmeldeinformation stehen soll:
Wenn angemeldet, zeige "angemeldet als $benutzername"
ansonsten zeige Anmeldeformular
Im Hauptteil:
Wenn angemeldet, zeige Inhalt
ansonsten zeige Hinweis auf notwendige Anmeldung
Die beiden ersten Teile benötigst du auf jeder Seite, die einen Anmeldestatus voraussetzt. Deshalb solltest du sie geeignet auslagern und jeweils einbinden.
Lo!