SirROG
Mitglied
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
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.
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?
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:
<input name="posttime" type="hidden" value="', time(), '" />
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;
?>
<!DOCTYPE html>
<html lang="de-ch">
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<meta name="viewport" content="width=device-width, initial-scale=no, user-scalable=yes">
<meta content="ROG Innovation" name="author">
<style type="text/css">
/*Spamschutz unsichtbares Feld für die Formulare*/
.unsichtbar {display:none;}
</style>
<title>Formular</title>
</head>
<body>
<a name="sprungmarke_kommentare"></a>
<h2>Kommentare</h2>
<?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 = "[email protected]";
$betreff = "Neuer Kommentar auf ROG Innovation vom ".date("d.m.Y - H:i");
$emailtext = $name. "<br><br>". $kommentar. "<br><br> maincategory: ". $maincategory. "<br>subcategory: ". $subcategory. "<br>subsubcategory: ". $subsubcategory. "<br>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 "<br><br>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'<div style="color: #009900;"><h2>Erfolgreich eingetragen</h2></div>
Vielen Dank für Deinen Kommentar :)<br><br>';
}
else
{
$kommentarestatus = fehler;
echo'<div style="color: red;"><h2>Fehler 1</h2></div>
Bitte alle Pflichtfelder ausfüllen - Danke.<br><br>';
}
}
else
{
$kommentarestatus = fehler;
echo'<div style="color: red;"><h2>Fehler 2</h2></div>';
echo "Gerade wurde der Kommentar in $verstrichenesendezeit Sek. zugespammt";
}
}
else
{
$kommentarestatus = fehler;
echo "kein numerischer string";
echo'<div style="color: red;"><h2>Fehler 3</h2></div>';
}
}
?>
<?php
/* Kommentare Formular anzeigen*/
if( $kommentarestatus != "erfolg" )
{
echo '<br>Hier können sowohl Fragen wie auch ein Feedback zum oben stehenden Artikel eingetragen werden.<br><br>';
echo '<form action="';
echo $_SERVER['PHP_SELF'];
echo '#sprungmarke_kommentare" metheod="POST" name="kommentarformular">';
echo '
<input name="posttime" type="hidden" value="', time(), '" /><input class="unsichtbar" name="hompage"type="text"> <input class="unsichtbar" name="url" type="url"> <input class="unsichtbar" name="email" type="email">
<span style="color: red;">*</span>Name:<br>
<input required="required" class="eingabefeld" name="name" type="text"><br>
<br>
<span style="color: red;">*</span>Kommentar:<br>
<textarea required="required" class="eingabefeld" rows="7" name="kommentar"></textarea><br>
<br>
<span class="unsichtbar">Terms:</span>
<input class="unsichtbar" type="checkbox" name="terms">
<input formmethod="post" value="Eintragen" class="button" name="sent" type="Submit">
<br>
<br>
<br>
<span style="color: red;">*</span><span style="font-style: italic;">Pflichtfeld</span><br>
</form>
';}
?>
<br>
Hinweis:<br>
Der Eintrag wird nach einer redaktionellen Prüfung in den kommenden Tagen freigeschalten.<br>
<br>
</body>
</html>
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?