É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?
Shamalt
2006. június 02. — 17:20:06
akkor ezek szerint a viagra viagra viagra csak 3 pont es beengedi 😛
Shamalt
2006. június 02. — 17:22:14
illetve bocsanat, csak 1, mert nem preg_match_all
Shamalt
2006. június 02. — 17:24:23
en preg_match_all-lal csinalnam, ha mar szamolos-pontozosat csinalsz 🙂
en pl kaptam csomo buy viagra v1agra v14gr4 es a szo osszes lehetseges alakjat tartalmazo spamet.
smv
2006. június 02. — 18:35:24
Mindjárt írok egyet. 😀
chateve
2006. június 03. — 18:45:24
Akkor majd segítek elkapni smv-t, mefi.:D Tiéd a bal heréje, enyém a jobb.:)
Landee
2006. június 03. — 22:03:31
Az egyik volt számtech-tanárom mondta : “Nincs jó program (algoritmus), csak jobb.” Lényegében igaza van.
Benjamin
2006. június 14. — 09:21:39
A vege sztem szebb igy:
return ($point > 5) ? TRUE : FALSE;
Mefi
2006. július 22. — 12:27:48
Igen, de ilyen komment még nem volt, hogy “viagra viagra viagra”, általában több pontot szokott kapni.
Mondjuk ironikus, hogy előbb becsúszott két komment, ami olyan szavakat tartalmazott, melyek nem voltak a listán. 🙂
Mefi
2006. július 22. — 12:27:48
Leleményesek ezek a
köcsögökbotok, egyszer kiherélnék egy spambot-készítőt.Mefi
2006. július 22. — 12:27:48
Igazad van, de végülis mindegy, gyorsaság szempontjából. Viszont tény, hogy esztétikusabban mutat.