Bloquear spam con PHP de la mano de Akismet

La pesadilla de todo Webmaster es el SPAM, si no tenemos alguna forma de bloquearlo puede convertirse en algo incontrolable. Akismet es un gran aliado de muchos usuarios de WordPress como este blog, pero puede serlo también de cualquier otra web desarrollada en PHP ya que dispone de clase que nos permitirá verificar todos los mensajes que se envían desde nuestra web.

El primer paso que debemos realizar es descargar desde la web de Akismet la clase para PHP5 para posteriormente subirlo a la carpeta donde tengamos el fichero donde recibimos los datos del formulario, tambien necesitaremos para poder usar Akismet la WordPress API key. Una vez que tengamos esto lo que tendremos que hacer es llamar al fichero class.akismet.php justo antes de guardar los datos en nuestra base de datos y confirmar que no es Spam de la siguiente forma:

function comprobarspam($comentario_nombre,$comentario_email,$comentario_url,$comentario_texto) {
   $WordPressAPIKey = 'clave';
   // Clave que nos devuelve Wordpress
   $web = 'http://www.ejemplo.com/';
   // Nuestro dominio
 
   require("class.akismet.php");
   // creamos una instancia de la clase
 
   $akismet = new Akismet($web ,$WordPressAPIKey);
   $akismet->setCommentAuthor($comentario_nombre);
   $akismet->setCommentAuthorEmail($comentario_email);
   $akismet->setCommentAuthorURL($comentario_url);
   $akismet->setCommentContent($comentario_texto);
   $akismet->setPermalink('http://www.ejemplo.com/urldelarticulocomentado/');
 
   if($akismet->isCommentSpam()) {
   //Comprobamos si el comentario es spam o no
      return true;
   } else {
      return false;
   }
}
 
 
$comentario_nombre = $_POST['nombre'];
// Nombre del comentario
$comentario_email = $_POST['email'];
// Email del comentario
$comentario_url = $_POST['url'];
// URL del comentario
$comentario_texto = $_POST['texto'];
// Texto del comentario
 
$spam = comprobarspam($comentario_nombre,$comentario_email,$comentario_url,$comentario_texto);

require("class.akismet.php");
// creamos una instancia de la clase

$akismet = new Akismet($web ,$WordPressAPIKey);
$akismet->setCommentAuthor($comentario_nombre);
$akismet->setCommentAuthorEmail($comentario_email);
$akismet->setCommentAuthorURL($comentario_url);
$akismet->setCommentContent($comentario_texto);
$akismet->setPermalink(‘http://www.ejemplo.com/urldelarticulocomentado/’);

if($akismet->isCommentSpam()) {
//Comprobamos si el comentario es spam o no
return true;
} else {
return false;
}
}

$comentario_nombre = $_POST[‘nombre’];
// Nombre del comentario
$comentario_email = $_POST[‘email’];
// Email del comentario
$comentario_url = $_POST[‘url’];
// URL del comentario
$comentario_texto = $_POST[‘texto’];
// Texto del comentario

$spam = comprobarspam($comentario_nombre,$comentario_email,$comentario_url,$comentario_texto);

Lo más apropiado ahora que sabemos que si es spam es eliminarlo, la efectividad en las veces que lo he probado es realmente alta. Lo que si nos podemos encontrar es con mensajes que no detecta, para reportarlos a Akismet podemos hacer uso de $akismet->submitSpam(); o en caso contrario $akismet->submitHam();.

Akismet

Cual duda error o sugerencia que tengáis podéis dejar un comentario.

Puedes hacer para continuar leyendo o ¡Puedes dejar un comentario en respuesta al artículo aquí!


Bloquear IP con .htaccess
Bloquear IP con .htaccess
Google nos permitirá bloquear contenido de su buscador
Google nos permitirá bloquear contenido de su buscador
[Humor] Santa Claus y el Spam
[Humor] Santa Claus y el Spam


Artículos relacionados

Sony empieza a bloquear PlayStation Network de las PS3 con PS Jailbreak
Sony empieza a bloquear PlayStation Network de las PS3 con P...
¿Cuál es el mejor sistema de comentarios para WordPress?
¿Cuál es el mejor sistema de comentarios para WordPress?
Evitar spam cuando publicas tu email.
Evitar spam cuando publicas tu email.
Enjuto Mojamuto. El spam y pishing.
Enjuto Mojamuto. El spam y pishing.