Doppelposting vermeiden

Das aktualisieren der Seite wird oftmals von Besuchern auch nach einem Forumular benutzt. Damit jedoch kein Doppelposting entsteht erkläre ich kurz eine Funktion.

Hierzu muss bereits am Anfang der php-Datei eine Session mit session_start(); gestartet werden.
Zusätzlich muss in das Formular ein zusätzliches Feld hinzugefügt werden. Der name kann natürlich Frei gewählt werden.

echo "<input name='rft' type='hidden' value='".random_form_token()."' />";

Bei der Verarbeitung des Formulars muss nun nurnoch vor dem Speichern dies hier abgeprüft werden.

if(random_form_token($_POST['rft'])){
  // Schreiben
}
else{
  // Doppelposting erkannt
}

Und nun hier noch die Funktion selbst.

function random_form_token($value=NULL){
	if($value == NULL){
		$token = hash("sha256","tanzmal".microtime());
		$_SESSION['random_form_token'] = $token;
		return $token;
	}
	else{
		if($value == $_SESSION['random_form_token']){
			unset($_SESSION['random_form_token']);
			return true;
 
		}
		else
			return false;
	}
}
Tags » , , , , , «

Autor:
Datum: Thursday, 13. August 2009 17:00
Trackback: Trackback-URL Themengebiet: PHP

Feed zum Beitrag: RSS 2.0 Diesen Artikel kommentieren

Kommentar abgeben