[PHP]Post Formular nicht erneut übergeben

11/24/2013 17:20 .Tobias#1
Hallo,

hat jemand eine Idee, wie ich ein erneutes Senden des Formulars ($_POST) bei einem Refresh/F5 verhindern kann ?

Es gibt leider keine Möglichkeit, diese Daten über Ajax zu verschicken!

Grüße

.Tobias
11/24/2013 17:25 Mikesch01#2
Was für eine Art Daten werden da versendet?

Man kann bei der Überprüfung der Daten vergleichen, ob diese schon einmal gespeichert wurden (falls diese in einer Datenbank oder in einer Datei gespeichert werden).
11/24/2013 17:31 .Tobias#3
Stimmt, hab ich gar nicht dran gedacht danach zu prüfen!
Vielen Dank :D
11/24/2013 19:25 pr0Cellarum#4
Beim aufrufen der Seite ein Token erstellen und in die Session speichern. Ebenso das Token mit einem versteckten Feld in der Form übermitteln.
Bei der Übermittlung prüfen, ob die Tokens übereinstimmen.
11/24/2013 23:29 adistoe#5
Mit einem Captcha könnte das ganze auch gelöst werden :)
11/25/2013 10:28 ҳc3ρ0™#6
Quote:
Originally Posted by adistoe View Post
Mit einem Captcha könnte das ganze auch gelöst werden :)
Was soll das denn bringen? Wenn man das Captcha erneut eingibt, wird das Formular ja wieder abgesendet.

Einfach das mit der Token-Session, wäre für mich auch die empfehlenswerteste Methode.
11/26/2013 17:26 adistoe#7
Quote:
Originally Posted by ҳc3ρ0™ View Post
Was soll das denn bringen? Wenn man das Captcha erneut eingibt, wird das Formular ja wieder abgesendet.

Einfach das mit der Token-Session, wäre für mich auch die empfehlenswerteste Methode.
Wenn man das Captcha erneut eingeben muss, dann kann nicht alles direkt wieder gesendet werden, also bringt es doch was...

Quote:
Originally Posted by .Tobias View Post
... ($_POST) bei einem Refresh/F5 verhindern kann ?
.Tobias
Dieses erfüllt ein Captcha vollkommen.

Aber die Idee mit dem Token kann ich auch empfehlen (allerdings nie selbst getestet)

mfg
adistoe
11/27/2013 12:52 Coniesan#8
Tjoa ich hab das mal so gelöst gehabt:

1. du nimmst eines deiner Felder aus dem Post, nennen wir dieses Feld: name="textfield"
2. nun hier der php Code:
PHP Code:
if(isset($_SESSION['desc']) && $_SESSION['desc']==$_POST['textfield'])
{
    echo 
"ERROR: You already send this!";
} else {
    
// Your Code to execute
    //.........
    
    // Don't be able to post again
    
$_SESSION['desc']=$_POST['desc'];