PHP - Erneute Formular Übermittlung

07/29/2014 22:59 FreewayC#1
Hi,

ich habe eine Form welche die Login Daten per "Post" übermittelt, nachdem der Login erfolgreich war wird der Anwender auf eine zweite Seite weitergeleitet.

Auf dieser Seite kann sich der Anwender ausloggen:
Code:
<a href="game.php?action=logout">Logout</a><br/> 

<?php
        if(isset($_GET['action'])){
        if ($_GET['action'] == 'logout'){ 
        session_destroy();
        header("Location: http://localhost/SimpleUse/session_abgelaufen.php"); 
        exit();
        } 
        }
?>
Wenn ich mich ausgeloggt habe und im Browser auf backwards clicke dann bekomm ich eine nette Meldung: "Erneute Formular-Übermittlung bestätigen"

Wenn ich diese Meldung akzeptiere bin ich wieder im "geschützten" Bereich, was ich aber nicht will.

Hab im Internet schon recherchiert dabei kam raus, dass ich den Header modifizieren soll, aber dies hat nicht geklappt (vielleicht habe ich es auch falsch gemacht).

Ich denk mal das hängt mit dem Browser zusammen, weil er die Daten im Cache hat. Also stellt sich mir die Frage, wie kann ich ihn daran hindern dass er die Daten speichert?


freundliche Grüße
07/29/2014 23:11 lnqlorlouz#2
Das mit dem no-cache kenn ich nur das hier:
Code:
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: no-cache");
07/29/2014 23:14 FreewayC#3
Mhmm,

danke für die schnelle Antwort, habs über dem <html> Element eingebunden, funktioniert aber nicht :/
07/30/2014 00:13 flogi333#4
Das gehört auf deine Logout Seite:

PHP Code:
<a href="game.php?action=logout">Logout</a><br/> 

<?php
        
if(isset($_GET['action'])){
        if (
$_GET['action'] == 'logout'){ 
        
session_destroy();

header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: no-cache");

        
header("Location: http://localhost/SimpleUse/session_abgelaufen.php"); 
        exit();
        } 
        }
?>
Eventuell solltest du als sicherheitsmaßnahme so etwas noch einbauen

PHP Code:
if(isset($_SESSION) && !empty($_SESSION))
{
//Hier kommt der Logout Code

Du überprüfst hier nur, ob die Session gestartet ist, und ob sie vorher nicht mit session_destroy geleert wurde.