Linwind

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);

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.

Publicado el 17 de noviembre, 2011

Bloquear IP con .htaccess
Publicado el 29 Jul 2009

Google nos permitirá bloquear contenido de su buscador
Publicado el 12 Mar 2011

[Humor] Santa Claus y el Spam
Publicado el 16 Dic 2009

Sony empieza a bloquear PlayStation Network de las PS3 con PS Jailbreak
Publicado el 23 Ago 2010

Dejar un comentario


Actualidad Windows Linux Juegos Redes Sociales Utilidades Telefonía Movil Micropost