Spamklasse

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:

  1. <?php
  2. require_once('antispam.class.php');
  3. $antispam = new AntiSpam ('comment', 'email', 'name');
  4. ?>

Da har input blitt lagt til til kontrollering. Slik jeg kontrollerer er ved å kjøre metoden is_spam(). Slik som dette:

  1. <?php
  2. // the form isset
  3.  
  4. if($antispam->is_spam())
  5.      echo 'Sorry, mate. You\'re spamming!' . "\n";
  6. ?>

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.

  1. <?php
  2.     function is_spam($limit = 65) {
  3.        
  4.         foreach($this->input_fields as $val)
  5.         {
  6.             $text = $_POST[$val];
  7.             /*
  8.                 Before we do anything else, lets see if the text
  9.                 contains any absolute forbidden
  10.                 words. If it does, lets declare this text for a
  11.                 definet spam-post!
  12.             */
  13.             if($this->check_words ($text))
  14.                 return true;
  15.            
  16.             /*
  17.                 And seacond, lets see if the host/ip of the
  18.                 poster is banned, meaning - you
  19.                 can't post here asshole!
  20.             */
  21.            
  22.             if($this->banned_host($_SERVER['REMOTE_ADDR']))
  23.                 return true;
  24.            
  25.             /*
  26.                 So, if we have both BBCodes and HTML codes,
  27.                 it is almost a surtan spam post.
  28.             */
  29.                        
  30.             if($this->bbcode_vs_html($text))
  31.                 return true;
  32.            
  33.             /*
  34.                 Well, if it's a small comment, the maths in
  35.                 this method can be abit ofset. So
  36.                 we have to make som exeptions in that case.
  37.                 So lets say, on a comment on only 250
  38.                 or less chars, we only allow 1 link of any kind.
  39.            
  40.             */
  41.  
  42.             if(strlen($text) <= 250){
  43.                 /*
  44.                     So, now we have a smaller text, lets
  45.                     make the tollerance for links smaller too.
  46.                 */
  47.                 if($this->exceed_url_bbcode_limit($text, 2)
  48.                     || $this->exceed_links_limit($text, 2)){
  49.                     return true;
  50.                 }
  51.                
  52.             } else {
  53.            
  54.                 /*
  55.                     So it's not a smaller post, then, lets
  56.                     make the tollerance for links widther.
  57.                     Shall we say 5 links? (Thats default)
  58.                
  59.                 */
  60.                
  61.                 if($this->exceed_url_bbcode_limit($text) ||
  62.                     $this->exceed_links_limit($text))
  63.                     return true;
  64.                
  65.                 /*
  66.                     Now lets do tha last check. This one is math related.
  67.                     If the links are more then X % of the text,
  68.                     it's most ligetly spam, so we wont allow this.
  69.                 */
  70.                 if($this->spam_percent($text, $limit))
  71.                     return true;
  72.             }
  73.  
  74.         }
  75.         return false;
  76.     }
  77. ?>

Det er altså mange flere metoder i klassen. Funksjonene til klassene er godt kommentert, så du skjønner hva de gjør.

3 responser om “Spamklasse”

  1. 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.


  2. Hei!

    Når kommer egentlig dette spam-filterett ditt.

    Christian


  3. Ikke om en stund. Nå er jeg i HMKG Tropp 1. Rekrut 55 Brevik for å være nøyaktig.


Legg igjen respons

Fyll ut alle felt markert med *

Brukerinformasjon
  1. Kan bruke følgende html: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> og [html] [css], [mysql] og [php] Hold posten ren og fin!

    Siter valgt tekst

E-post-varsel uten å skrive kommentar.

Info om posten

Innlegget ble postet 25.10.06 20:07 og ligger under kategorien PHP / MySQL. Du kan abonnere på kommentarene ved å bruke RSS 2.0 feed. Du kan legge til kommenter, eller trackback fra din blogg/side.

Resurser

Arkiver

Metainfo


Søkeform

Relaterte linker

  • Ingen relaterte linker

Diverse

  • twofifty.org

Siste Flickr-bilder

  • Commentsystem (20070308)
  • Ukraina Aksjonen 2006 (20070306)
  • Mikael Brevik blogg (20070306)
  • Mikael Brevik (20070306)
  • Brukerdefinert side - AVIS2 (20070306)
  • Brevik Webutvikling (20070306)
  • skyscraper
  • visittkort