Vielleicht sieht hier einer einen Fehler, ich leider nicht. Im Grunde ist es ein simpler Reloadschutz für die Anfrage-Formulare. Leider kommt es aber dennoch immer wieder vor, dass ein Nutzer das Formular mehrfach absendet und das auch funktioniert. Eben eine Dame 7 mal "reloaded" binnen 5 Minuten.
$checksum_arr = array();
$checksum_arr['uk_id'] = $_POST['unterkunft_id'];
$checksum_arr['name'] = $_POST['name'];
$checksum_arr['email'] = $_POST['email'];
$checksum_arr['telefon'] = $_POST['telefon'];
$checksum_arr['nachricht'] = $_POST['nachricht'];
$checksum_arr['anreise'] = $_POST['anreise'];
$checksum_arr['abreise'] = $_POST['abreise'];
$checksum_arr['personen'] = $_POST['personen'];
$checksum_arr['kinder'] = $_POST['kinder'];
$checksum_arr['hunde'] = $_POST['hunde'];
// Checksumme über alle Anfragedaten bilden
$checksum = md5(serialize($checksum_arr));
Anschließend wird die Datenbank abgefragt, ob "$checksum" schon da ist. Wenn ja, dann wird normalerweise abgebrochen und wenn nein, dann werden die Daten normal in die DB geschrieben und die $checksum eben auch, damit sie dann bei einem Reload vorhanden wäre.
So, das Problem nur, die $checksum ist bei diesen bestimmten Personen immer eine andere und ich habe keinen Schimmer warum. Ich nutzte ja extra aus dem Post-Array nur die bestimmten Daten, die bei einem Reload gleich bleiben. Es stehen auch exakt die gleichen Daten in der Datenbank, halt eben mehrfach. Nur die gebildete checksum ist anders. Rein theoretisch müssten also beim Reload andere Daten kommen, wenn dem aber so wäre, dann müssten auch andere Daten in der DB stehen.
Hat einer eine Idee?