
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:
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.
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:
1 2 | // Incluimos la clase Akismet include('includes/Akismet.class.php'); |
El siguiente paso es incluir la clave que nos ha proporcionado Akismet así como la URL de nuestra web
1 2 3 | //Introducirmos la API key para nuestra web $api_key = 'aqui va la clave'; $blog_url = "http://www.miweb.com"; |
A continuación creamos el objeto Akismet:
1 2 | // Creamos el objeto Akismet $akismet = new Akismet($blog_url ,$api_key); |
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.
1 2 3 4 5 | if($akismet->isKeyValid()) { echo '<p>La clave es buena</p>';// api key es buena } else { echo '<p>La clave no vale</p>'; // api key no es buena } |
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.
1 2 3 4 | $akismet->setCommentAuthor($nombre); $akismet->setCommentAuthorEmail($email); $akismet->setCommentContent($comentarios); $akismet->setCommentAuthorURL($url); |
1 2 | // Enlace permanente donde el formulario es enviado $akismet->setPermalink('http://www.ejemplo.com/una-url/'); |
Para saber si Akismet considera que es Spam podemos hacer:
1 2 3 4 5 | if ( $akismet->isCommentSpam() ) { // Aquí va el código, mensaje de error o lo que queramos, o incluso archivarlos en algún sitio para comprobarlos más adelante } else { // Aquí va el código en el caso de que NO sea Spam } |
Y eso es todo, como véis es muy sencillo de usar. Todo el código junto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | // Incluimos la clase Akismet include('includes/Akismet.class.php'); //Introducirmos la API key para nuestra web $api_key = 'aqui va la clave'; $blog_url = "http://www.miweb.com"; // Creamos el objeto Akismet $akismet = new Akismet($blog_url ,$api_key); // Condicional para ver si la clave es válida if($akismet->isKeyValid()) { // Campos a filtrar $akismet->setCommentAuthor($nombre); $akismet->setCommentAuthorEmail($email); $akismet->setCommentContent($comentarios); $akismet->setCommentAuthorURL($url); // Enlace permanente donde el formulario es enviado $akismet->setPermalink('http://www.ejemplo.com/una-url/'); // Decidimos qué hacer si es Spam y si no lo es if ( $akismet->isCommentSpam() ) { // Aquí va el código, mensaje de error o lo que queramos, o incluso archivarlos en algún sitio para comprobarlos más adelante. } else { // Aquí va el código en el caso de que NO sea Spam, que normalmente será continuar con cualquier proceso de validación o incluso ya con el envío del formulario. } } // Fin del condicional si la clave es válida |
Web de Akismet
Documentación de Akismet
Aching Brain, Akismet para PHP5
Sigue a Juan en Twitter, en Google+, o suscríbete al RSS Feed de Emenia para estar al día de nuestros artículos.
2011-2012 © Copyright Emenia S.L. - Creación y Diseño web \ Marketing Online \ Comunicación - Todos los derechos reservados.
I’d perpetually want to be update on new posts on this site, saved to fav! .
este campo por ejemplo tiene askimed?
Genial! Lo que no me queda claro es lo del “enlace permanente donde el formulario es enviado”. Realmente que pongo ahí?.