Scripts

Spamfilters PHPhulp

Na zo'n 7 topics, 40 posts en 2 maanden geef ik de moed op om het nog op een fatsoenlijke manier naar voren te brengen. Dit houd 90% van alle spam op PHPhulp tegen, en vooral die commentspam als reacties op de scripts begint mij ontzettend te ergeren. En dat terwijl er maar zo'n kleine ingreep nodig is om er vanaf te komen. Een mogelijkheid zou kunnen zijn dat waneer door de functie hieronder een bericht als 'spam' wordt gezien deze opnieuw moet worden opgestuurd, maar dan met een checkbox gechecked. Geen spambot die dat zal doen, en vrij simpel in te bouwen. Daarbij zullen er zeer weinig posts zijn waar de onderstaande functie op reageert, tenzij het spam is. Dus bij deze. Probeer het nou even. Het kan geen kwaad!

spamfilters-phphulp
Idee 1: Beviel goed, maar ik zie nu ook spam die erdoor heen zou komen.
<?php
function ScanForSpam($message){
    $message =trim($message);
    $found = false;
    
    if(preg_match('{^<h1>(.*)</h1>$}i', $message) && (preg_match_all('{<a href="(.+?)">(.+?)</a>}i', $message, $matches) >= 2)){
        $found = true;
    }
    
    return $found;
}
?>

Idee 2, geen voorbeeld van:
<?php
function ScanForSpam($message){
   $found = false;
   $message = trim($message);

   if(preg_match('{<a href="(.+?)">(.+?)</a>}i', $messages) >= 2){ //bevat minstens 2 a-href links (iedereen gebruikt [url])
      if(!preg_match('{<\?(.+?)\?>}', $message) //bevat geen php 
         && !preg_match('{<{b|u|i|html|script|div|span}>}i', $message)//bevat geen hedendaagse html
         && !stristr('$', $message)//bevat geen dollartekens -> geen variabelen.
      ){
         $found = true;
      }elseif(preg_match('{^<h1>(.*)</h1>$}i', $message)){
         $found = true;
      }
   }
   return $found;
}

Reacties

0
Nog geen reacties.