Tip sencillo para evitar el SPAM en formularios

Tip sencillo para evitar el SPAM en formularios

Fecha: 12-Jul-2010 | Autor: .
Guardado en: Desarrollo Web

La semana pasada me registré en Forrst.com, una red social de diseñadores y desarrolladores web (en Inglés), y me topé con un tema que ya hace tiempo había visto en un blog y me pareció super interesante, y dado que ésto me lo recordó ahora, decidí postearlo aquí ;)

Es bien sabido, que todos deseamos evitar el SPAM en formularios de contacto o de comentario, pero a veces los CAPTCHAS se tornan un poco molestos o complejos para los usuarios, y hasta los hay que optan por evitar comentar o contactarnos al ver que deben completar captchas que muchas veces no funcionan del todo correcto.

Hay una forma mucho más sencilla para poder detectar si un formulario está siendo completado por un bot automático dedicado a llenar nuestras casillas de correo y nuestros blogs de SPAM, y tan sólo es necesario utilizar HTML y CSS, veamos como…

La idea es agregar en nuestro formulario, un campo de texto extra (llamado por ejemplo verificacion; o como prefiramos) y ocultarlo mediante CSS. De esta forma los usuarios no lo verán y no lo completarán. En cambio un bot automático sí que llenará el campo, de modo que luego, antes de guardar el comentario o enviar el correo, solo debemos comprobar que el campo verificacion esté vacío y en caso de no estarlo, no proceder. Veamos esto con un ejemplo de código:


¿Por qué este anuncio?
<form method="post" action="enviar.php">
     <label for="nombre">Nombre:</label>
     <input name="nombre" value="" size="20" />
     <label for="email">Email:</label>
     <input name="email" value="" size="25" />
 
     <label for="verificacion" class="verif">¡Si ves esto, no llenes el siguiente campo!</label>
     <input name="verificacion" class="verif" />
 
     <input type="submit" value="Enviar" />
</form>

Ese sería el código HTML del formulario, que se complementaría con el siguiente código CSS para evitar que el campo verificacion se muestre. Notar que de todas formas incluyo una etiqueta (también oculta por CSS) para evitar que un usuario que navegue con CSS deshabilitado complete dicho campo ;)

.verif{ display: none; }

Con esa línea de CSS definimos que el campo verificacion (y su label) no sean visibles.

Y por último, a la hora de procesar el formulario, debemos tener en cuenta que el campo verificacion no esté completado:

<?php
if ($_POST['verificacion'] != ""){
    // Es un SPAMbot
    exit();
}else{
    // Es un usuario real, proceder a enviar el formulario.
}
?>

Bueno, ahora solo resta que vayas a proteger tus formularios! ;)


Si te gustó, comparte:
Y si fue de ayuda, puedes comprarme un café:
...ó la cena si quieres! ;)

Etiquetado como: , , , ,


Gravatar

Marcelo


Desarrollador web, trabajando desde Montevideo, Uruguay para todo el mundo. Me especializo en Diseño web, Maquetación HTML5 & CSS3, jQuery y Programación PHP & MySQL, e intento aprender un poco más cada día.

52 comentarios, participa!

  1. Blas

    26. Jun, 2017

    Funciona genial. Espero que los robots de spam no aprendan a solucionarlo.
    Gracias.

  2. badaman

    04. Sep, 2017

    Una muy buena solución. Gracias por la info.

Deja tu opinión