Saltar al contenido
LINWIND de Windows a Linux

~/diseno-y-web

Bloquear spam con PHP de la mano de Akismet

Marcos · · 1 min

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.

# sigue leyendo

Comentarios

Deja un comentario

Tu correo no se publica.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.