Spamschutz für ke_smallads: Captcha einbinden
Mit der Extension ke_smallads können Besucher der Website Kleinanzeigen aufgeben, lesen und durchsuchen. Die Erweiterung ist recht flexibel und leistungsstark, allerdings fehlt ein CAPTCHA-Modul zum Schutz vor Spammern.
Voraussetzungen
In diesem Text geht es um die Kombination zweier Erweiterunge: captcha und ke_smallads. Natürlich sollten diese beiden installiert sein :-)
Prinzipiell funktioniert es übrigens genauso mit anderen Captcha-Extensions; diese Anleitung sollte daher auch für diese mit kleinen Anpassungen funktionieren.
TypoScript
ke_smallads wird fast vollständig über TypoScript konfiguriert. Daher baue ich das Captcha-Feld auch hier ein, damit der Code übersichtlich und wartbar bleibt.
Wir benötigen für das Captcha zwei neue Elemente: das Captcha-Bild und ein Eingabefeld, in das der User den Captcha-Code eintragen kann.
plugin.tx_kesmallads_pi1 {
CaptchaWrong.value = Der CAPTCHA-Code war leider falsch.
smalladForm {
#Captcha
65 = TEXT
65.value = <img src="/typo3conf/ext/captcha/captcha/captcha.php" alt="Captcha" />
66.type = captcha=input,6
66.required = 1
66.label = Captcha-Zeichenfolg
}
}
Anpassung in der Extension ke_smallads
Damit auch die Gültigkeit des Captcha überprüft wird, muss nun noch eine kleine Änderung in der Extension ke_smallads selbst gemacht werden.
In der Methode processFormforNewAd wird der Check eingebaut:
// Check if the captcha value is correct
session_start();
$captchaStr = $_SESSION['tx_captcha_string'];
if ($this->postVars['captcha'] != $captchaStr) {
return $lcObj->TEXT($this->conf['CaptchaWrong.']);
}
Zunächst wird mit session_start() der Sitzung beigetreten, die das Captcha-Modl bei der Generierung des Bildes dankenswerterweise bereits geöffnet hat (bzw. der bestehenden Sitzung einen String hinzugefügt hat).
Anschließend wird überprüft, ob der Wert, den der User in das captcha-Feld eingetragen hat, identisch ist mit dem Referenzwert, den das Captcha-Modul in die Sitzungsvariable $_SESSION['tx_captcha_string'] geschrieben hat. Falls nein, wird eine Fehlermeldung ausgegeben und die Verarbeitung beendet - ansonsten machen wir wie gewohnt weiter und tragen die Kleinanzeige in die Datenbank ein.
Das war's schon - mit kleinem Aufwand hat damit ke_smallads die Captcha-Funktionalität erhalten.


Kommentar hinzufügen