Spam-Schutz für Gästebuch

  • Themenstarter Themenstarter starfoxfs
  • Beginndatum Beginndatum
S

starfoxfs

Hallo zusammen und zwar habe ich folgendes Problem:

In meinem Gästebuch kann man Doppelposts über refreshen F5 Spamen. Nun wollte ich fragen wie ich dies umgehen kann.

Ich hab hier mal den Teil des Codes der in die DB einträgt und weiterleitet. Genau bei der Weiterleitung kann dann über F5 gespammt werden.

PHP:
$name = addslashes($name);
$homepage = makelink($homepage);
$gb_text = strip_tags($gb_text);
$gb_text = wordwrap($gb_text, 40, " ", 1);
$titel = addslashes($titel);
$gilde = addslashes($gilde);
$gb_text = addslashes($gb_text);

$eintrag = "INSERT INTO 
guestbook
(id, userid, titel, gilde, text, name, email, icq, homepage, ip_adresse)
VALUES 
('$timestamp', '0', '$titel', '$gilde', '$gb_text', '$name', '$email', '$icq', '$homepage', '$ip_adresse')
";

mysql_query($eintrag) or die("Error: " . mysql_error()); 

}

echo "<script>
function redirect()
{
window.location.replace(\"?include=guestbook&show=anzeigen\");
}
setTimeout(\"redirect();\", 3000);
</script>";
 
Leite einfach nach erfolgreicher Aktion auf dasselbe Skript um:
PHP:
header('Location: '.$_SERVER['REQUEST_URI'], true, 303);
exit;
 
Das hab ich auchschon probiert nur geht das nicht weil mein Header bereits abgeschickt wurde.

Am liebsten wäre mir eine IP Sperre oder eine Reload Sperre
 
[…] nur geht das nicht weil mein Header bereits abgeschickt wurde.
Auch dagegen ist ein Kraut gewachsen. So etwa die Funktionen zur Ausgabesteuerung. Besser wäre es jedoch, in solch einem Stil zu programmieren, dass diese Hilfsmittel erst gar nicht nötig sind.

Doch selbstverständlich gibt es auch andere Techniken. Du könntest etwa mit PHP-Sitzungen arbeiten, im Skript des Formulars ein Flag setzen und dieses direkt nach erfolgreicher Aktion wieder löschen.
 
Ist das bei dieser Art von Script auch möglich?
Wenn ja ... wie?

Denn der "header()" kann ich ja nicht ausführen bei "form_check = true"!

PHP:
if($_POST['kontakt_insert_check']) {
  $form_check = "true";

  if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $_POST['submit_email'])) { 
    $form_check = "false";
  }
}
  
if($form_check == "true") {
### Mail Senden ###
}
 
Probleme glaub ich nicht, aber eigentlich verwendet man ob_start imho nicht, weil man es normalerweise auch anders lösen kann, dein Problem zumindest
 
Und wie wär es anders möglich?

Für den Form Check eine eigene Datei verwenden, sonst fällt mir derzeit nichts anderes ein!

MfG proloser
 
Zurück