Php guestbook reload/postform sperre

Haiya1986

Grünschnabel
Hey...ich sitze verzweifelt seid ca. 30 std. daran herauszufinden:eek:
wie ich folgendes problem lösen kann->

Guestbook / Shoutbox spam

Ich habe mit Java einen SUBMIT button erstellt der von 20 sec. runterläuft und erst dann freigeschaltet ist, um spam zu vermeiden.

der Button läuft ab, ist frei. draufgeklickt, abgeschickt.

1. so, wenn ich nun beim browser auf ZURÜCK klicke, ist der button immer noch frei und ich kann sofort wieder posten, so viel ich will

2. wenn ich nach dem absenden auf RELOAD oder F5 drücke, kommt sicherheits abfrage blabla, wenn man auf OK klickt, wird es wieder gepostet (spam)

könnte mir da jemand helfen? wäre super....:)
 
Du meinst wohl JavaScript und nicht Java und dies ist kein wirkliches Hindernis. Was ist z. B. wenn JavaScript ganz deaktivert ist?
Oder wenn der User das Formular runterlädt, das Ziel verändert und dein Skript entfernt?

Nutze lieber eine serverseitige Sperre (per IP, Hash, Cookies, z. B.)

http://www.tutorials.de/forum/php-tutorials/146689-ip-check-und-zaehl-funktion.html
Hier ein kleines Tutorial dafür.

Falls du den Einsatz mit IP Adressen benutzt, solltest du bedenken, dass es bei AOL Kunden wahrscheinlich nicht funktionieren wird, da diese bei jedem neuen Request eine neue IP Adresse aus deren Pool bekommen.
 
Siehe hier ;)
http://de.wikipedia.org/wiki/Hash

Dieser Hash wird in letzter Zeit öfters zur eindeutigen Identifizierung genutzt, da aufgrund mehrfach genutzer IP Adressen (z. B. Wohnheime) oder auch wechselnde (z. B. AOL) die IP nicht ausreicht.

Ich setze diesen so zusammen, um eine möglichst exakte Identifizierung vorzunehmen.

PHP:
public function genUserHash() {
		$temp_hash = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . $_SERVER['HTTP_ACCEPT'];
		$hash = sha1($temp_hash);
		return $hash;
	}

Diesen setz ich dann in einen Cookie und versuche ihn zu speichern...
Falls Cookies abgelehnt werden, so wird der Wert trotzdem samt IP und aktuellen Zeitstempel in die Datenbank gespeichert.
Sollte bei einem erneuten Aufruf der Hash oder die IP übereinstimmen und in der angegebenen Zeitspanne liegen, wirds blockiert.

Die Frage ist, ob sich eine solch aufwendige Aktion wirklich lohnt ;)
 
Zurück