Text-Anweisungen statt Frage und Antwort-Captcha
Freitag, 19 Juni 2009 1 Kommentar
Spammer sind faule Menschen. Die Devise lautet, soviele Formulare spammen wie möglich. Der Einsatz muss dabei überschaubar bleiben. Die Frage-Antwort-Captcha sind da ein probates Mittel. Auf die Frage "Wieviel ist eins + 2" sind Spamrobots nicht getrimmt. Menschen können, wenn Sie das 1mal1 gelernt haben, meist die richtige Antwort geben. Bei Vervollständigungen (Sinnvolle Fortsetzung von As, König, Dame, ....) wird es schon schwieriger. Hier können Tippfehler auftauchen.
Das Prinzip kann aber vereinfacht werden, ohne das Hirn des Besuchers mit Rechenaufgaben oder Rechtschreibung zu belasten und ohne das automatische Spambots dahinter kommen. Und barrierefrei kann es auch gestaltet werden. Die einfache Anweisung über einem beliebigen Feld
bitte aus Spamschutzgründen in dieses Feld nur Großbuchstaben eintragen
reicht schon aus. Der Formmailer im Hintergrund muss selbstverständlich in der Lage sein, das zu prüfen. Eine andere, ebenso simple, Anweisung könnte lauten:
bitte als erstes Zeichen in diese Feld ein Pluszeichen setzen
Auch hier prüft der Formmailer auf das Pluszeichen (und entfernt es dann aus der ästhetischer Überlegung heraus). Weitere Möglichkeiten oder Varianten ergeben sich von selbst.
Hier die entsprechenden Mailer-Prüfungen:
<?php
$strg = 'HERBERT';
if(strtoupper($strg) == $strg) {echo "nur Großbuchstaben";}else{echo "auch Kleinbuchstaben";}
?>
Die übergebene Variable in Großbuchstaben umgewandelt (strtoupper()) muss genau gleich (==) der übergebenen Variable sein.
<?php
$strg = 'HERBERT';
echo ucfirst(strtolower($strg)); // macht aus den Großbuchstaben wieder Kleinbuchstaben, bis auf den Ersten
?>
<?php
$strg = '+Zimmermann';
if($strg{0} == '+') {echo "alles roger, Pluszeichen vorhanden";} else{echo "Stopp! kein Pluszeichen an erster Stelle";}
?>
Das erste Zeichen der übergebenen Variablen wird mit $strg{0} auf ein Pluszeichen hin überprüft. Mit substr entfernt man, im Erfolgsfall, dann das Pluszeichen.
<?php
echo substr($strg, 1); // gibt den String beginnend mit dem ersten Zeichen wieder
?>
This is a nested column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
This is another nested column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Hallo. Ich bin neu hier und auch neu in der Programmierung. Ich würde gerne die obige Kontrolle in mein Fromular einfügen. Allerdings weiß ich nicht genau an welcher Stelle. Hättet ihr mir vielleicht ein ganzes Formular, in dem die Kontrolle eingefügt ist. Oder tips, wie ich es einfügen muss? Vielen herzlichen Dank! Hallo Sabine, üblicherweise fügt an solche Felder an das Ende des Formulars, vor den Absendebutton. Setze ein Inputfeld und gebe den Namen strg. Dort wo die Formularverabeitung stattfindet (das Script, das vom Formular aufgerufen wird) fügst Du dann ene er obigen Abfragen ein.