Bis jetzt funtioniert folgende Lösung auf unsere Firmenwebsite sehr gut. Es prüft ob der User zuerst auf der Seite zum Ausfüllen der Daten war und dann auf Senden geklickt hat ohne cookies.
Funtionsweise:
Beim Aufrufen des Formulars wird in einen Logfile Timestamp und IPadresse gespeichert. Der Timestamp wir auch im Formular hinterlegt.
Vor dem versenden wirdt geprüft ob der Zeit+IP aus dem Formularfeld mit ein Eintrag im Logfile übereinstimmt. Wenn Ja, dann wird der Eintrag im Logfile gelöst und der inhalt versendet (Kontaktformular oder Gästebuch eintrag)
Folgender PHPcode habe ich verwendet:
1. beim aufrufen des Formulars:
Code:
$timestamp = time();
$Filename="Log/session.txt";
$zeitip = $timestamp."/".$_SERVER['REMOTE_ADDR']
$file =fopen($Filename, "w+");
fwrite ($file,$zeitip);
fclose($file);
2. Im Formular:
Code:
<INPUT type="hidden" name="form_zeit" value="<? echo $timestamp; ?>">
3. Vor dem versenden:
Code:
<--- Schnipp
$form_zeit = $_POST['form_zeit'];
$Filename="Log/session.txt";
$email_control=0;
$ZeitIP= $form_zeit . "/" . $REMOTE_ADDR;
$file_array = file("$Filename");
foreach ($file_array as $wert)
{
if ($wert == $ZeitIP)
{
unset($file_array[$i]);
$inhalt = implode("", $file_array);
$neuesfile = fopen($Filename, "w+");
fwrite(neuesfile,$inhalt);
fclose($neuesfile);
$email_control=1;
}
}
if($email_control==1)
{
//Inhalt versenden
}
else
{
die('SPAM');
}
Schnapp ---->
Lesezeichen