Mindenki másképp csinálja

Én például így:


function isSpam($s,$e)
{
 $black = array("<br>", "porn", "teen", "viagra","software","nice site","casino");
 $white = array("zokni[kukac]mefi.be");
 $point = 0;

 foreach($black as $spam){
   if(preg_match("#\b".$spam."\b#",$s)) { $point++; }
 }

 if(in_array($e,$white)){ $point - 5; }
 if($point > 5){ return true; } else return false;
}

A fehér- és a feketelista elemeit természetesen adatbázisban tárolom, de maga a kezelés így működik.

Aki esetleg nem értené: a függvény egyesével végigzongorázza az összes tiltott szót, és ha a kommentben valamelyik szó egyezik a feketlistán szereplő elemek egyikével, akkor a feketepont értéke eggyel nő. Ha pedig a – jelen esetben &ndsah; e-mail cím szerepel a protekciós listán, akkor öt pontot levon a feketepontok összegéből. Ez értelmeszerűen azért van, hogy aki tíz éve itt kommentál, azt ne ellenőrizze ilyen szigorúan. Ha a feketepontok száma nagyobb, mint öt, visszatérési értéke igaz, ellenkező esetben hamis.

Eddig ez bevált, nem nagyon engedett be csak olyan szemeteket, amelyek tartalma egy e-mail volt, de már (úgy néz ki) azokat is szűri. Egyébként nekem a tiltott IP- és e-mail címeket és neveket is ezzel ellenőrzi, bár megjegyzendő, hogy nem sok ilyen van.

Még régebben Shamalt is írt egy ilyen módszerről; ha még nem tettétek, olvassátok el azt is, minél többet lát az ember, annál jobb.

Egyébként a <code> elem helyett mért nem <pre>-t használok?

« »

mefiblog logó

Írja és rendezi Mefi, avagy Nádai Gábor © 2005-2024

A blogot büszkén pörgeti a WordPress motorja, Anders Norén sablonjának átbuherált változatával.