PHP: Repost-Verhinderung beim Aktualisieren (F5)

Wenn der Besucher die Seite versehentlich oder absichtlich aktualisiert, nachdem er die über ein Formular mit PHP geposteten Daten empfangen und verarbeitet hat, wird er gefragt: „Möchten Sie die gleichen Daten erneut senden?“ Möglicherweise wird ein Warnfenster angezeigt. Es gibt viele Möglichkeiten, dies loszuwerden.

Im Allgemeinen besteht die bevorzugte Methode darin, die Daten nach der Verarbeitung auf eine andere Seite umzuleiten. In einigen Fällen möchten Sie möglicherweise nicht auf eine andere Seite umleiten oder die Seite in PHP aktualisieren. Das finde ich gesund.

Mit dem folgenden Snippet (indem Sie session_start() entfernen, wenn es zuvor ausgeführt wurde) können Sie diese Warnung entfernen und verhindern, dass Benutzer dieselben Daten erneut posten.

session_start();  
if( strcasecmp($_SERVER['REQUEST_METHOD'],"POST") === 0) {
  $_SESSION['postdata'] = $_POST;     
  header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']); 
  exit;  
}  

if( isset($_SESSION['postdata'])) { 
  $_POST = $_SESSION['postdata'];      
  unset($_SESSION['postdata']); 
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.