For litt siden skrev jeg en artikkel om hvordan jeg hadde tenkt å bekjempe spam. Nå er betaversjonen av scriptet mitt ferdig. Jeg kommer ikke til å gi ut noe komplette koder, i alle fall ikke før den er blitt testet en stund, og eventuelt utvidet. Men her kommer jeg med selve kjernen i metoden, og viser hvordan jeg bruker den.
Først av alt kaller du frem klassen ved å sette alle felt i _POST du vil ha sjekket etter spam. Dette gjøres slik:
-
<?php
-
require_once('antispam.class.php');
-
$antispam = new AntiSpam ('comment', 'email', 'name');
-
?>
Da har input blitt lagt til til kontrollering. Slik jeg kontrollerer er ved å kjøre metoden is_spam(). Slik som dette:
-
<?php
-
// the form isset
-
-
if($antispam->is_spam())
-
echo 'Sorry, mate. You\'re spamming!' .
"\n";
-
?>
Her er selve kjernen, godt kommentert. Dere får se dette for å videreføre scriptet, ikke kopiere, men få egene ideer til hvordan dere kan gjøre antispammingen.
-
<?php
-
-
-
foreach($this->input_fields as $val)
-
{
-
$text = $_POST[$val];
-
/*
-
Before we do anything else, lets see if the text
-
contains any absolute forbidden
-
words. If it does, lets declare this text for a
-
definet spam-post!
-
*/
-
if($this->check_words ($text))
-
return true;
-
-
/*
-
And seacond, lets see if the host/ip of the
-
poster is banned, meaning - you
-
can't post here asshole!
-
*/
-
-
if($this->banned_host($_SERVER['REMOTE_ADDR']))
-
return true;
-
-
/*
-
So, if we have both BBCodes and HTML codes,
-
it is almost a surtan spam post.
-
*/
-
-
if($this->bbcode_vs_html($text))
-
return true;
-
-
/*
-
Well, if it's a small comment, the maths in
-
this method can be abit ofset. So
-
we have to make som exeptions in that case.
-
So lets say, on a comment on only 250
-
or less chars, we only allow 1 link of any kind.
-
-
*/
-
-
-
/*
-
So, now we have a smaller text, lets
-
make the tollerance for links smaller too.
-
*/
-
if($this->exceed_url_bbcode_limit($text, 2)
-
|| $this->exceed_links_limit($text, 2)){
-
return true;
-
}
-
-
} else {
-
-
/*
-
So it's not a smaller post, then, lets
-
make the tollerance for links widther.
-
Shall we say 5 links? (Thats default)
-
-
*/
-
-
if($this->exceed_url_bbcode_limit($text) ||
-
$this->exceed_links_limit($text))
-
return true;
-
-
/*
-
Now lets do tha last check. This one is math related.
-
If the links are more then X % of the text,
-
it's most ligetly spam, so we wont allow this.
-
*/
-
if($this->spam_percent($text, $limit))
-
return true;
-
}
-
-
}
-
return false;
-
}
-
?>
Det er altså mange flere metoder i klassen. Funksjonene til klassene er godt kommentert, så du skjønner hva de gjør.
Hello!
Når jeg har fått testet dette lenge nok, og utvidet det tilrekkelig så vil det bli utgitt til forskjellige distrubieringer. Jeg har jobbet litt på et wordpress-plugin som kan implanteres lett. Den legger til filteret og kjører sjekken på all post som kommer inn.
Men som sagt, klassen kan implenteres i script når jeg er helt ferdig med den.
Mikael Brevik skrev dette 27 Oktober, 2006 16:25 - Sitér
Hei!
Når kommer egentlig dette spam-filterett ditt.
Christian
KrooniX skrev dette 2 Oktober, 2007 17:59 - Sitér
Ikke om en stund. Nå er jeg i HMKG Tropp 1. Rekrut 55 Brevik for å være nøyaktig.
Mikael Brevik skrev dette 2 Oktober, 2007 19:52 - Sitér