un Forastero  <Webworking>


wir prüfen auf: böse, böse Wörter (the Badwords)

Freitag, 19 Juni 2009   

Das Prinzip ist einfach. Wir vergleichen jedes Wort, das uns aus einem Formularfeld gesendet wird, mit einer bestimmten Wortliste. In der Wortliste stehen Wörter, die wir nicht übermittelt bekommen wollen. Das ganze packen wir in eine Funktion und integrieren einen Zählmechanismus. Mit dem Funktionsaufruf prüfen wir auf eine bestimmte Anzahl böser Wörter. So kommt es zum Beispiel erst bei 3 gefundenen, bösen Wörtern zur Ausgabe einer Fehlmeldung.

<?php

// Funktionsaufruf
if(check_badwords('notiz', 'POST') >=3 ){$fehler=1;}

?>

Wir rufen die Funktion check_badwords() auf und geben ihr dabei den Formularfeldnamen (im Beispiel heißt das Feld "notiz") und die Methode, wie das Formular versendet wurde, hier POST. Findet die Funktion check_badwords() 3 oder mehr böse Wörter, wird der Variablen $fehler, der Wert 1 verpasst.

Kommen wir zur Funktion. Das Array $badwordsarray ist in diesem Beispiel kurz gefasst, für den Praxisgebrauch empfiehlt es sich, eine deutlich höhere Anzahl an Wörter reinzupacken. Jede neue Spammail, die irgendwie durchkommt, liefert neue Wörter fürs Array.

<?php

// Funktion
function check_badwords($fieldname, $formmethod){

$badwordsarray=array(
'[link',
'[/url',
'Greetings',
'friends',
'amp',
'movie'
);

if($formmethod=="POST"){$feldwert=$_POST[$fieldname];}
elseif($formmethod=="GET"){$feldwert=$_GET[$fieldname];}
else{return false;}

$wortliste=array();
foreach($badwordsarray as $boeseswort){
if($boeseswort!=""){$wortliste[]=strtolower($boeseswort);}}

for($st=0, $hochzaehlen=0; count($wortliste)>$st ; $st++){
$pos = strpos(strtolower($feldwert), $wortliste[$st]);
if($pos !== false){$hochzaehlen++;}
}
if($hochzaehlen==0){return $ergebnis=false;}
else{return $ergebnis=$hochzaehlen;}
}

?>

Die Funktion liefert die Anzahl an gefundenen Badwords oder liefert false, falls kein Badword gefunden wurde oder liefert ebenfalls false, wenn die Formular-Methode nicht richtig übermittelt wurde.



Kommentare

es gibt insgesamt 0 Kommentar(e)



Name*
Vorname
Kommentar*
Email
Homepage
Telefon
Sicherheitscode *
 


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.