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:

1
2
3
4
5
6
7
8
9
10
11
<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 ;)

1
.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:

1
2
3
4
5
6
7
8
<?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ó este post, compártelo:
  • Meneame
  • Twitter
  • Facebook
  • Google Bookmarks
  • Live
  • del.icio.us
  • BarraPunto
  • Technorati
  • Bitacoras.com
Me gusta! A 3 lectores les ha gustado esta entrada.
Loading ... Loading ...

Etiquetado como: , , , ,

Gravatar

Marcelo Ferreiro


Desarrollador web: me especializo en Diseño web, Maquetación xHTML & CSS y Programación PHP & MySQL, e intento aprender un poco más cada día.

19 comentarios, participa!

  1. Lucas

    12. jul, 2010

    Interesante, lo voy aponer en práctica en alguno de mis blogs (de seguro en el que más spam me netra xD ) a pesar de tener un captcha, sigue entrando spam.

    Gracias Marcelo por este tip :)

  2. ign

    12. jul, 2010

    Lo había visto también hace un tiempo y es una excelente idea. Aún mejor si en vez de verificador, ponés un nombre como “last_name”, por decir algo.

    La única desventaja es que si bien es un excelente método (lo tengo andando en una web hace meses y jamás llegó spam) es infinitamente fácil de romper si llegara a masificarse. Es decir, es efectivo mientras los bots no sepan que se usa, o mejor dicho, mientras no lo use mucha gente.

  3. mltulian

    12. jul, 2010

    Muy buen metodo que no se me habia ocurrido ni lo habia visto. Tiene razon @ign, pero por lo pronto, es lo que considero mas efectivo y sencillo para el usuario.

  4. Pollofrito

    17. jul, 2010

    También queda la opción de un CAPTCHA propio, es decir una serie de imágenes con palabras nada deformadas, que rotarán y el script verificaría que coincide con , por ejemplo, 1 de las 10 posibles.

    El autor del post tiene razón…. los CAPTCHAS automáticos son terribles, son miles de veces las que no he conseguido entender la palabra o se me pasó algún carácter y te cansa y se te quitan las ganas de responder posts o artículos.

  5. ricardo

    28. jul, 2010

    Hola buenas, voy utilizar el método ahora mismo. He sufrido en mi web ingresos constantes de comentarios con links a páginas de viagra y estoy harto, le puse la opción de moderar (porque el capcha se lo saltaba sin problemas) yo lo comentarios antes de incluirlos pero cada vez que abro mi correo me encuentro los 5 o 6 correos del spambot.
    un saludo y os cuento que tal si funciona bien os lo haré saber.
    un saludo y muchas gracias.

  6. ricardo

    29. jul, 2010

    Hola buenas, el método me ha funcionado perfectamente,
    enhorabuena y muchas gracias.

  7. PuroVIVE!

    22. ago, 2010

    Gracias man…..te lo agradesco mucho…mi sitio habia sido invadido por mucho spam…..y con esto he quedado mas que feliz!!!!!

    GRACIAS!!!

  8. HogoJp

    13. dic, 2010

    Yo uso un sistema muy parecido y por ahora no tengo queja jeje. Lo que hago es poner un campo input para el nombre de usuario con el name=”" nombre y otro con el valor name, el segundo le meto un display none y pista, misma comprobación que dices en el artículo, y hasta ahora 0 spam :)

  9. Claudio

    27. may, 2011

    Excelente idea!. De todas formas el mayor problema es la masificación. Hasta ahora solo he tenido un mensaje como SPAM así que voy a probar con otros métodos y si no funciona voy con este. Excelente aporte.

  10. Marcelo

    30. may, 2011

    Me alegro que a varios les haya resultado útil… y es verdad que la masificación puede devenir en que los spammers se carguen este método, pero eso siempre sucede, como sucedió con los primeros captchas… y es por eso que día a día terminan siendo más complejos :S

    Saludos!

  11. yaqui

    29. jun, 2011

    estoy haciendo pruebas para un cliente pero me encontrado con la desgracia de que tiene que sera en ASP. ¿Alguna forma sencilla de convertir el codigo?

  12. Maximiliano Jiménez

    09. sep, 2011

    Genial. Muchas gracias.

  13. sergio

    26. sep, 2011

    Muchas gracias, acabo de implementar tu solución a mi sitio web, espero que funcione ya que he creado una especie de muro de comentarios y me lo petan de span del puto viagra, dentro de unos días te dire si me ha funcionado.
    Normalmente las soluciones mas sencillas son las mejores…

  14. Marcelo

    26. sep, 2011

    Hola Sergio, espero que te sirva…
    Yo justo la semana pasada volví a aplicarlo en una web que tenía mucho SPAM y logró reducirlo en aprox. un 90% ;)

    Suerte!

  15. Arturo

    27. sep, 2011

    Excelente tip!

  16. Sergio

    04. oct, 2011

    Aupa Marcelo!!!, muy buena tu solución, llevo más de una semana y ni un span!!!, muchas gracias de nuevo.

  17. Marcelo

    04. oct, 2011

    Me alegro Sergio que a tí también te haya funcionado ;)

  18. Claudio

    06. oct, 2011

    Se me ocurrió algo así al pasar, que tal si a esto, que por cierto es muy útil, le modificamos esto: que el campo oculto se llame nombre y el campo que realmente tiene el nombre se llame de otra forma, por ej nombbrree. Para qué? para que al poner oculto un campo con nombre popular el bot lo complete cosa que con el nombre verificacion puede que viendo este caso lo contemplen y dejen de completar. Es más, yo le agregaría dos campos ocultos: nombre y name, quien quiera hacer spam los completa de cabeza. Espero que se haya entendido.

  19. Claudio

    09. nov, 2011

    Les cuento que, por lo menos el que me hace spam a mi, pasa por alto este truco. Para mi que usa algo que rellena los formularios en el navegador en vez de mandar los datos mediante un robot…

Deja tu opinión