Websitebetreiber befinden sich in einem fortwährenden Kampf gegen Spammer und Kontaktformular-Missbraucher. Die neue Version des Dr. Web-Kontaktformular-Baukastens beherrscht Spam-Erkennung mittels Akismet und hilft so, eine weitere Schlacht erfolgreich zu schlagen.
Akismet wird den Nutzern von WordPress bekannt sein, denn ein Akismet-Plugin gehört zum Standardumfang der Blogsoftware. Der Dienst funktioniert wie eine Black-Box. Akismet beantwortet die Benutzereingabe mit einem “Spam” oder “Nicht Spam”. Die Nutzung ist also sehr einfach und daher kann die Funktion ohne Schwierigkeiten auch in unseren Baukasten eingebaut werden.
Akismet eingebaut in fünf Schritten
Die Kommunikation mit Akismet erledigt die simple Akismet-Klasse von Bret Kuhn. Sie ist im Archiv der neuen Baukasten-Version (der Artikel dazu) enthalten. Die folgenden fünf Schritte beschreiben den Einbau von Akismet. Alternativ können Sie auch die fertigen Dateien aus dem Archiv mit der neuen Version des Baukastens verwenden.
Schritt 1: Konfiguration
define( 'AKISMET_KEY', '');
define( 'AKISMET_MARK', true);
define( 'HOME_PAGE', "");
Um den Akismet-Dienst nutzen zu können, benötigen Sie einen Akismet-Schlüssel. Diesen erhalten Sie kostenlos nach einer Registrierung auf wordpress.com. Dabei ist es unerheblich, ob Sie WordPress einsetzen oder nicht. Den Schlüssel schreiben Sie in einfache Anführungszeichen, also zum Beispiel so:
define( 'AKISMET_KEY', 'schluessel');
Die Akismet-Prüfung ist aktiviert, sobald dort ein Schlüssel eingetragen ist. Wollen Sie die Prüfung vorübergehend abschalten, weisen Sie der Konstante ‘AKISMET_KEY’ eine leere Zeichenkette zu.
Mit der Konstanten ‘AKISMET_MARK’ steuern Sie, was im Falle einer positiven Spam-Erkennung passieren soll. Hat die Konstante den Wert ‘true’ (ohne Anführungszeichen!), wird die Nachricht nur im Betreff markiert. Falls der Nutzer ein Häkchen bei “Kopie an mich senden” gesetzt hat, würde in diesem Fall allerdings keine Kopie gesendet werden. So wird das Missbrauchspotenzial des Formulars gesenkt, wenn beispielsweise ein Spammer die E-Mail-Adresse seines Spam-Opfers als vermeintlichen Urheber der Nachricht eingibt. Hat die Konstante den Wert ‘false’ und wird die Nachricht als Spam erkannt, bricht das Skript die Bearbeitung mit einer Fehlermeldung ab.
Die Adresse Ihrer Homepage geben Sie als Wert für die Konstante ‘HOME_PAGE’ ein. Dies ist in der Akismet-API so vorgesehen. Geben Sie die volle URL an, inklusive “http://” am Anfang.
Schritt 2: Akismet-Klasse einbinden
Die Akismet-Klasse muss jetzt eingebunden werden. Der Block ‘Includes einbinden’ sieht danach so aus:
// Includes einbinden
YDInclude( 'YDForm.php' );
YDInclude( 'YDRequest.php' );
YDInclude( 'YDTemplate.php' );
YDInclude( 'YDEmail.php' );
YDInclude( 'YDDrWebPersistent.php' );
YDInclude( 'akismet.class.php' );
Schritt 3: Akismet-Schnittstelle
In Zeile 200 folgt der wesentliche Teil der Erweiterung. Die neue Funktion checkAkismet() steuert die Akismet-Klasse an und dient als Schnittstelle des Skriptes.
function checkAkismet($eingabe) {
if( AKISMET_KEY === '' )
return false;
$comment = array( 'author' => $eingabe['lesername'],
'email' => $eingabe['lesermail'],
'website' => HOME_PAGE,
'body' => $eingabe['lesernachricht'],
);
$akismet = new Akismet(HOME_PAGE, AKISMET_KEY, $comment);
if($akismet->errorsExist())
trigger_error("Konnte keine korrekte Verbindung zum
Akismet-Server erhalten! Prüfen Sie bitte den
Akismet-Schlüssel.", E_USER_ERROR);
return $akismet->isSpam();
}
Der Rückgabewert der Funktion ist das Ergebnis der Spam-Prüfung.
Schritt 4: Was tun bei Spam?
In Zeile 213 wird zukünftig entschieden, was mit Spam passieren soll: die Verarbeitung abbrechen oder die Nachricht nur als Spam markieren?
$isSpam = $this->checkAkismet($eingaben);
if($isSpam === true && AKISMET_MARK === false)
trigger_error("Spam", E_USER_ERROR);
Schritt 5: Die letzten Änderungen
Die Zeile 246 enthielt bislang diese Zeile:
$eml->setSubject( sprintf( MAIL_SUBJECT, $betreff[ $eingaben['betreff']['value'] ] ) );
Diese ändern Sie bitte wie folgt, so dass der Betreff bei Bedarf tatsächlich markiert wird:
$betreffvorlage = $isSpam === true ? '[SPAM] ' . MAIL_SUBJECT : MAIL_SUBJECT;
$eml->setSubject( sprintf( $betreffvorlage, $betreff[ $eingaben['betreff']['value'] ] ) );
Die Zeile 255 mit diesem Inhalt
if($eingaben['kopie']['value'] === 0)
wird durch diese Zeile ersetzt:
if($isSpam === true || $eingaben['kopie']['value'] === 0)
Die neue If-Anweisung bewirkt, dass keine E-Mail-Kopien gesendet werden, wenn der Inhalt der Nachricht als Spam erkannt wurde.
Artikel zum Thema:
- Dr. Web-Kontaktformular-Bausatz
- Tipps zum Dr. Web Kontaktformular-Bausatz
- Unsichere Kontaktformulare
Erstveröffentlichung am 08.03.2007
Weitere Beiträge:
- 5 Ideen wie Sie wiederkehrende Arbeitsschritte & Marketingprozesse gewinnbringend im Internet automatisieren! Ein Gastbeitrag von Robert Nabenhauer.
- Wachstum durch Facebook-Gewinnspiele: Wie Sie über Facebook virale Gewinnspiele & eine schnell wachsende Fangemeinde aufbauen
- Wie Sie aufmerksamkeitsstarke Prelaunch-, Launch- und Relaunch-Szenarien aufbauen und dabei Viralität, Spannung & Kaufkraft erzeugen
- Wie Sie waschechte Iphone-Apps mit PhoneGAP entwickeln, um am lukrativen App-Markt mitzumischen
- Wie Sie Ihr Shop-Sortiment so präsentieren, dass der Kunde in Zukunft mehr findet und eher kauft! Ein Gastbeitrag von Nicolas Schmidt-Voigt.
- 11 faszinierende BuddyPress-Plugins, um kostenlos aus WordPress ein soziales Netzwerk zu zaubern
- Die Vorboten einer neuen Internet-Industrie! Ein exklusiver Rückblick & Blick hinter die Kulissen der Clickbank-Exchange 2011 in New York.


Noch keine Kommentare vorhanden!