Cómo implementar una solución fácil contra el Spam

Hoy en día una web, blog … en la que los usuari@s no puedan añadir sus comentarios a los posts y/o entradas de ésta, pierde muchos puntos. Ello conlleva una pesadilla para muchos, el SPAM. Bueno, para el que no tenga ya uno y no quiera utilizar Wordpres, BlogSpot … os voy a explicar cómo programar una forma muy muy fácil de cómo desechar los comentarios buenos de los que son spam. Es muy sencillo y seguro que a algunos de vosotros ya se os había ocurrido. Es una forma de las muchas que hay, de cosecha propia, con sus pros y sus contras y para programarlo en PHP, ya que losrobots se pueden saltar a la torera las funciones de JavaScript que tengamos (lo se por experiencia).

Bueno, vamos allá:

Imagináos que tenemos nuestra web, con nuestros posts y al final de cada uno de ellos un formulario para incluir comentarios. Cuando se escribe un comentario y se envía para su inserción en el post, es donde entramos nosotros. Lo que vamos a hacer es buscar en el nombre del comentarista, en su correo, url y en el comentario una serie de palabras que hemos definido como spam.

Éste sería el código:

      <?php
      include ('spam.php'); 

      function es_spam($texto,$spam) 
      { 
         $esto_es_spam=false; 
         $i=0; 

         for($i=0; $i<count($spam); $i++) 
         { 
            $mystring=$texto; 
            $findme=$spam[$i]; 
            $pos=strpos($mystring, $findme); 

            if($pos === false) 
            { 
               //No hacer nada, string no encontrada 
            }else{ 
               $esto_es_spam=true; 
            } 

            if($spam==$texto) 
               $esto_es_spam=true; 
         } 

         return $esto_es_spam; 
      } 

      if($_POST['btInsertarComentario']) 
      { 
         if( es_spam($_POST['autor'],$spam) ||  
             es_spam($_POST['correo'],$spam) ||  
             es_spam($_POST['url'],$spam) ||  
             es_spam($_POST['comentario'],$spam) ) 
         { 
            echo 'Lo siento tu comentario está considerado como SPAM.'; 
         }else{ 
            echo 'Tu comentario es válido para insertar en la Base de Datos'; 
         } 
      }
      ?>

Simplemente utilizamos una función para comprobar si el texto contiene alguna de las palabras que son para nosotros spam.

En el fichero spam.php es donde recolectaremos en un array llamado $spam nuestro spam (valga la redundancia) y tendríamos el siguiente código:

<?php
$spam[0]="mysoulspot.com";
$spam[1]="@zggegi.com";
$spam[2]="sgdotnet.org";
$spam[3]="splinder.com";
$spam[4]="design21sdn.com";
$spam[5]="ea.com";
$spam[6]="niaksiejr.ru";
$spam[7]="adsoftheworld.com";
$spam[8]="gardenguides.com";
$spam[9]="maxblog.pl";
$spam[10]="chess.com";
?>

Es un array de strings. Podemos usarlo así o recorrer una tabla de una base de datos donde tengamos las cadenas de spam y rellenar el array. Si algún string de alguna posición se encuentra en el autor, correo, url o en el comentario, simplemente no se insertará en la base de datos, ya lo puede intentar el robot cuantas veces quiera que no se insertará el comentario.

Sencillo no? Bueno pues las entradas anteriores son las que tengo ahora mismo yo que insertan spam en la web. ¿Y por qué utilizo esas? Porque al insertar un robot o alguien un comentario de spam dejasu marca (ya sea su web, su correo …).

Nota: Cuidado de no insertar como spam palabras simples como por ejemplo perro, casa … A ver si vais a invalidar comentarios que son correctos.

Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *