Formular Spamschutz durch Zeitabfrage

Hallo ich bin gerade an einem Zeitspam Schutz in meinem Kommentarformular am einbauen.
Im Chrom funktioniert diese Methode auch prima nur im Internet Explorer und im Firefox wird die Zeit bei einem erneuten Aufruf der Seite (also nicht Refrech F5) sondern wenn z.B auf eine andere Seite gegangen wird und dann wieder auf die Seite mit dem Kommentarformular gesprungen wird, wird die Zeit im Input Feld
[HTML][/HTML]
nicht mehr nachgetragen sondern es bleibt die alte vom ersten Aufruf.

Habe diese Methode nun in diversen Beispielen mit der Google Suche gefunden aber nirgends zu diesem Problem einen Hinweis gefunden.

Hier mein Kommentarformular Code inkl. allen Spam verhinderungs Methoden.
[PHP]<?php $kommentarestatus = undefiniert; ?>

/*Spamschutz unsichtbares Feld für die Formulare*/ .unsichtbar {display:none;} Formular

Kommentare

<?php // Eintragen (sent) wurde gerückt if(isset($_POST['sent'])) { // Daten von Formular übernehmen und eMail Daten konfigurieren $timezone = 'Europe/Berlin'; date_default_timezone_set($timezone); $hompage = htmlspecialchars($_POST["hompage"]); // spamschutz $url = htmlspecialchars($_POST["url"]); // spamschutz $email = htmlspecialchars($_POST["email"]); // spamschutz $terms = htmlspecialchars($_POST["terms"]); // spamschutz $name = htmlspecialchars($_POST["name"]); $kommentar = htmlspecialchars($_POST["kommentar"]); $empfaenger = "xxx@xxx.com"; $betreff = "Neuer Kommentar auf ROG Innovation vom ".date("d.m.Y - H:i"); $emailtext = $name. "

". $kommentar. "

maincategory: ". $maincategory. "
subcategory: ". $subcategory. "
subsubcategory: ". $subsubcategory. "
page: ". $page; // Daten überprüfen // Zeit wurde gesetzt und enthält einen numerischen String if (isset($_POST['posttime']) && is_numeric($_POST['posttime'])) { $posttime = intval($_POST['posttime']); $verstrichenesendezeit = (time() - $posttime); echo "

Time:". time(). " posttime:". $posttime. " verstrichnezeit:". $verstrichenesendezeit; // verstrichne Zeit seit Formularseite geladen wurde muss grösser als 5 Sec. und kleiner als 6h sein if ($verstrichenesendezeit > 5 && $verstrichenesendezeit < 21600) { if($url=="" && $hompage=="" && $email=="" && $name!="" && $kommentar!="" && !isset($_POST["terms"])) { $kommentarestatus = erfolg; echo'

Erfolgreich eingetragen

Vielen Dank für Deinen Kommentar :)

'; } else { $kommentarestatus = fehler; echo'

Fehler 1

Bitte alle Pflichtfelder ausfüllen - Danke.

'; } } else { $kommentarestatus = fehler; echo'

Fehler 2

'; echo "Gerade wurde der Kommentar in $verstrichenesendezeit Sek. zugespammt"; } } else { $kommentarestatus = fehler; echo "kein numerischer string"; echo'

Fehler 3

'; } } ?> <?php /* Kommentare Formular anzeigen*/ if( $kommentarestatus != "erfolg" ) { echo '
Hier können sowohl Fragen wie auch ein Feedback zum oben stehenden Artikel eingetragen werden.

'; echo ''; echo ' *Name:


*Kommentar:


Terms:


*Pflichtfeld
';} ?>
    <br>
    Hinweis:<br>
    Der Eintrag wird nach einer redaktionellen Prüfung in den kommenden Tagen freigeschalten.<br>
<br>
[/PHP]

Hat jemand eine Idee an was es liegen könnte das nicht die aktuelle Zeit gesetzt wird sondern die vom ersten Mal Laden der Seite?

Browser-Cache? ^^

Vielen Dank threadi!

Denke dies trifft es so ziemlich - Haha schon komisch das in den Tutorials im Web nirgends etwas davon erwähnt wurde.

Also den gesamten Browser-Cache kann man löschen aber kann auch über PHP nur das Eingabe Feld mit der Zeit gelöscht werden also „time()“? Oder funktioniert diese Anti Spam Methode gar ned wirklich und wurde nur aneinander abgeschrieben? xD. Weil so würden zwar die Spam Boots wahrscheinlich davon abgehalten, da sie den Cache deaktiviert haben werden aber ein echter Nutzer würde somit beim ersten Besuch die Zeit im Cache speichern und spätestens nach 6h könnte er auch keinen Kommentar mehr posten, da er ausserhalb der erlaubten Zeit liegen würde.

Statt eines Hiddenfields würde ich mit Sessions arbeiten. Zu dem würde ich noch ein Honeypot (google hilft) einbauen, um Bots besser aussperren zu können.

Vielen Dank für deinen Kommentar, das hab ich zusätzlich auch noch vor. Muss zu den Sessions erst mal paar Tutorials durcharbeiten und mich da einarbeiten und die Servereinstellungen dazu abklären :wink:

Meine Frage wurde mit deinem Post jedoch noch nicht ganz beantwortet xD und zwar ob es möglich ist den Cach im Browser vom Zeitstempelfeld irgendwie zurück oder auf die aktuelle Zeit zu setzen?

Nein, du kannst den Cache eines Browser nur empfehlend per HTTP-Header-Feldern beeinflussen. Siehe:
http://www.paulund.co.uk/disable-http-cache-with-php

Vielen Dank threadi, somit wurde meine Frage nun abschliessend beantwortet.