Session und "vorherige Seite" mit Zurück-Pfeil
AirMax
- php
Hallo zusammen,
ich habe eine Problem, das nicht wirklich eines ist. Aber dennoch versuche ich dafür eine Lösung zu finden.
Ich habe einen Login-Bereich mit folgender Struktur:
1. login.php (Überprüfen des Benutzernamens & Passwortes)
2. logged.php (Bereitstellung von Daten)
3. loggedout.php (Session löschen)
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?
Meine Ideen:
Sind das die beiden einzigen Möglichkeiten?
Danke für Eure Hilfe!
Gruß
AirMax
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!
Hi Lo,
danke für deine Antwort
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.
Da hast du recht. Bisher ist bei mir alles chronologisch: erst 1, dann 2 und dann 3. Das ist ein Fehler. Das habe ich das erste mal bemerkt, als der Fall auftrat, dass der Benutzer schon angemeldet ist. In diesem Fall musste ich die Login-Prozedur mittels Location-header überspringen. unschön...
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.
Ich glaube mein Problem ist, dass ich immer vom HTML-Code ausgehe. Zurzeit ist er die Grundlage für die PHP-Skripte, die ich zusätzlich einbinde. Aber scheinbar muss ich da umdenken. Das PHP-Script sollte im Vordergrund stehen & entscheiden, was an HTML ausgegeben wird!?
Allerdings ist ein Hin- und Her-Weiterleiten zu den jeweiligen Seiten keine schöne Angelegenheit.
Siehe oben!