2016-03-20 4 views
0

Ich habe ein Formular, das bei der Aktualisierung erneut einreicht. Ich habe SO gesucht und nichts zu meinem speziellen Problem gefunden. Ich weiß, es ist besser, eine separate PHP-Seite zu haben, aber für dieses spezifische Projekt muss alles auf einer PHP-Seite sein. Ich brauche den POST, wenn die Seite aktualisiert wird, damit das Formular nicht automatisch erneut gesendet wird.POST-Daten beim Aktualisieren löschen PHP

Bitte beachten Sie, dass ich nicht die Seite Umleitung woanders deshalb kann ich nicht verwenden Pfosten-/Redirect/Get haben. Das Ergebnis, das ich gerne haben möchte, ist folgendes: Personenbesuche zum ersten Mal, Eingabe von korrektem Code, Skriptdurchläufe, dann das nächste Mal, wenn sie die Seite usw. besuchen oder aktualisieren, müssen sie das Formular erneut ausfüllen. Irgendwelche Vorschläge würden sehr geschätzt.

$code = ''; 
$hide = "<script>$('form').fadeOut(500).remove(); 
$('.wrapper').addClass('form-success'); 
$('.container').delay(1800).fadeOut(500);</script>"; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $code = secure($_POST["code"]); 
} 

function secure($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

if (intval($code) == 1234) { 
echo $hide; 
$code = ''; 
} else { 
echo "Failed"; 
$code = ''; 
} 

Antwort

2

Sind Sie sicher? Es ist völlig in Ordnung, den Benutzer auf die aktuelle Seite umzuleiten, und ich bin mir ziemlich sicher, dass das deine beste Option ist. Also nach der Verarbeitung des Codes, umleiten der Benutzer auf die aktuelle Seite, und eine Aktualisierung wird nicht mehr das Formular erneut einreichen. Stellen Sie nur sicher, dass Sie mit dem HTTP-Antwortcode 303 umleiten. [Es löst eine GET-Anfrage] [1]:

This method exists primarily to allow the output of a POST-activated script to redirect the user agent to a selected resource. The new URI is not a substitute reference for the originally requested resource. The 303 response MUST NOT be cached, but the response to the second (redirected) request might be cacheable.

du header unter Verwendung tun können, nachdem die Submit verarbeitet wurde (aber vor jedem html an den Benutzer senden wurde):

header('Location: '.$_SERVER["PHP_SELF"], true, 303); 
+0

Danke, hast du ein Beispiel dafür? Ich habe mir noch nicht die Zeit genommen, PHP richtig zu lernen, so dass ich manchmal ziemlich verwirrt bin. Würde ich einfach action = "index.php" im Formular verwenden? Oder würde ich Header (Location :) im PHP-Skript selbst verwenden? @Sjon – Verpz

+0

Dies ist meine aktuelle Aktion: action = "" – Verpz

+0

Ich habe den spezifischen Code auf meine Antwort – Sjon

Verwandte Themen