Im Gästebuch der Landjugend RheinhessenPfalz habe ich ein paar Zeilen PHP-Code verwendet, um Gästebuch-Spam abzufangen. Das Funktionsprinzip war recht einfach: wenn der Eintrag nach Spam aussieht, setze $_POST['firstname'] = "". Das Gästebuch hat dann den fehlenden Vornamen beklagt ;-) und den Eintrag zuverlässig abgewiesen.
Nach dem Update auf Typo3 4.0 funktioniert das so nicht mehr - scheinbar wird $_POST von Typo3 gecacht.
Der Einfachheit halber habe ich jetzt doch ve_guestbook gepatcht:
--- pi1/class.tx_veguestbook_pi1.php_ORIG 2006-10-22 03:07:02.000000000 +0200
+++ pi1/class.tx_veguestbook_pi1.php 2006-10-22 02:56:52.000000000 +0200
@@ -947,6 +947,11 @@ function checkForm() {
}
}
+ if (!empty($this->postvars['entry'])) {
+ if (preg_match ( "/\[url=.*\]|<a[^>]*href/i", $this->postvars['entry']))
+ $error .= "<li>Bitte keinen Spam posten!</li>\n";
+ }
+
if ($this->config['email_validation'] && !empty($this->postvars['email'])) {
if (t3lib_div::validEmail($this->postvars['email']) == false) {
Der Feature Request für eine offizielle "Eintrag Blacklist" Konfiguratonsoption in ve_guestbook, die ganz normal übers Typo3-Backend konfiguriert werden kann, ist übrigens auch schon beim Autor eingereicht ;-)
UPDATE (17.11.2006)
Der Fehler lag woanders - Typo3 4.0.2 cacht ve_guestbook zu aggressiv.
Das führte zum Einen dazu, dass mein Hack, $_POST zu verändern, nicht mehr funktioniert hat, und zum anderen dazu, dass keine neue Gästebucheinträge akzeptiert wurden - die Bestätigungsseite wurde gechacht und der Eintragen-Code im Gästebuch wurde deshalb nicht mehr ausgeführt :-(
Die Lösung: Die Seite komplett vom Cachen ausschließen (nicht wirklich empfehlenswert) oder im Typoscript plugin.tx_veguestbook_pi1 = USER_INT eintragen. (Quelle)
Und schon kann man wieder $_POST missbrauchen ;-)