[PHP] Login-Formular
-
Hallo!
Ich hab hier ein Problem mit meinem Login-System. Ansich funktionieren die PHP-Klassen, welche für die Autorisierung und die Sessions zuständig sind. Das Problem lässt sich am besten am Firefox-Browser illustrieren:
Ich gebe meine Login-Daten in das Login-Formular ein und schicke diese ab, woraufhin ich die Nachricht erhalte, dass ich erfolgreich eingeloggt bin (das Ziel des Formulars ist die selbe PHP-Datei). Wenn ich auf den Link "Logout" klicke, werde ich erfolgreich ausgeloggt, und das Formular für die Login-Daten erscheint wieder. Wenn ich nun auf den Zurück-Button klicke, erscheint folgende Warnung vom Browser:
"The page you are trying to view contains POSTDATA that has expired from cache. If you resend the data, any action the form carried out (such as a search or online purchase) will be repeated. To resend the data, click OK. Otherwise, click Cancel."
Es wird sich jeder vorstellen können, was passiert wenn ich auf OK klicke. Richtig: Firefox sendet erneut die Login-Daten, was dazu führt, dass ich wieder eingeloggt bin. Es versteht sich natürlich von selbst, dass ich dieses Verhalten irgendwie unterbinden muss, da es eine Sicherheitsschwachstelle darstellt.
Ich habe schon versucht, mit Header-Informationen das Cachen zu verhindern, aber es funktioniert einfach nicht. Mit der Webdeveloper-Toolbar in Firefox kann ich mir die Response-Headers anschauen, und die Cache-Control-Headers sind eindeutig vorhanden...
Meine Konfiguration: Apache/2.0.53 (Win32), PHP/5.0.3
PS.: Ich hab schon mal versucht die Login-Prozedur bei GMX zu verfolgen. Da tritt das zuvor beschriebene Verhalten nicht auf. Lässt sich dadurch auf erfolgreiches Cache-Management schließen? Oder kann mein Problem noch andere Ursachen haben?
Hoffe mir kann jemand helfen
-
Ich bin mir nicht sicher, ob das so funktioniert, aber evtl. kannst du den Effekt erziehlen, wenn du auf der Zielseite gleich eine header-Weiterleitung machst.
-
Danke für den Tipp
. Wie's aussieht funktioniert es jetzt. Das Verhalten ist tatsächlich deshalb aufgetreten, weil ich nach einem erfolgreichen Login nicht umgeleitet habe.