Cerrar
Image Alt

Filtrar el spam de un formulario con Akismet

Los que hayáis creado webs o blogs con WordPress sabéis ya que incorpora un potente servicio llamado Akismet para verificar, filtrar y reportar si un mensaje es considerado Spam. Aunque sus comienzos proceden de WordPress existen ya gran cantidad de plugins para otros CMS (Drupal, Joomla, Expression Engine…), lenguajes y frameworks (PHP, Ruby, Phyton, Java, Ruby on Rails, Coldfusion, Codeigniter….).

Vamos a centrarnos en el plugin para PHP 5.

Lo primero que tenemos que hacer es descargarnos Akismet:
PHP5Akismet.0.4.zip 24K

A continuación descomprimimos el archivo Akismet.class.php y lo archivamos en una carpeta de nuestro proyecto (a efectos de este ejemplo suponemos que lo guardamos en la carpeta «includes»)

Ahora ya estamos listos para usarlo. Hay que tener en cuenta que en nuestro formulario deberíamos tener además un sistema de validación (tanto en Javascript como en PHP) adicionales. Una vez que el formulario enviado pase dichos filtros estaríamos en condiciones de establecer un filtro más, el de Akismet:

Primer paso: obtener la clave (API key)

Para usar Akismet necesitamos antes de nada obtener una clave (API key) para activar y usar Akismet. Esta clave es gratuita y la podemos obtener desde la misma página de Akismet. Debéis tener en cuenta que hay ciertas condiciones de uso para las cuales necesitaríais obtener una clave comercial.

En el formulario se nos pide una dirección de correo electrónico, la enviamos y recibiremos la clave.

Segundo paso: Incluir Akismet en nuestro código

Una vez tengamos la clave ya podemos incluir Akismet. Como vimos más arriban tenemos el archivo Akismet.class.php dentro de la carpeta «includes». Para incluirlo hacemos símplemente:

Incluir la clave (API key)

El siguiente paso es incluir la clave que nos ha proporcionado Akismet así como la URL de nuestra web

Creamos el objeto Akismet

A continuación creamos el objeto Akismet:

Probamos si la clave (API key) es válida

Estas líneas sólo nos serviran para comprobar si la clave que tenemos es válida. Una vez veamos que todo va bien las podemos eliminar. O también podemos incluir todo el código que crearemos a continuación dentro del condicional, para que sólo se ejecute si la clave es válida.

Definir los campos a filtrar

A continuación establecemos qué campos de nuestro formulario son los que vamos a filtrar contra Spam. En este caso suponemos el nombre, e-mail, el comentario y una url. Las variables proceden del código que deberíamos haber creado previamente para obtener los valores de $_POST enviados por el formulario que una vez validados se asignan a cada variable.

Establecer el enlace permanente donde el formulario es enviado

Condicional si se considera spam

Para saber si Akismet considera que es Spam podemos hacer:

Y eso es todo, como véis es muy sencillo de usar. Todo el código junto:

Documentación adicional

Web de Akismet
Documentación de Akismet
Aching Brain, Akismet para PHP5

Comentarios

  • I’d perpetually want to be update on new posts on this site, saved to fav! .

    12 enero, 2011
    contestar
  • madfizher

    este campo por ejemplo tiene askimed?

    9 agosto, 2011
    contestar
  • Genial! Lo que no me queda claro es lo del «enlace permanente donde el formulario es enviado». Realmente que pongo ahí?.

    31 octubre, 2011
    contestar

Escribe un comentario