Ir directamente al contenido de esta página

El método simple de Martin Psinas para prevenir el spam

Revisando la lista de vínculos de la categoría que todos tenemos de «para leer después», me he encontrado con un artículo del mes pasado de Martin Psinas, Easy Spam Prevention Using Hidden Form Fields, que como su título indica explica un método sencillo para prevenir el spam. Lo explicamos aquí, primero para que se tenga en cuenta como alternativa al CAPTCHA —que siempre nos ha parecido infame—, y segundo porque es el tipo de solución que comparte nuestra misma filosofía de desarrollo: buscar una solución más simple a un problema, aunque tengamos la capacidad de aplicar soluciones de dominio común.

La idea básica de la que parte Psinas es que los robots no distinguen entre campos obligatorios y opcionales a la hora de rellenar un formulario y enviarlo. Por ello, se puede incluir en el mismo uno para el que se pida expresamente a un usuario humano que lo deje en blanco:


<form action="procesar-formulario.php" method ="post">

  // Campos del formulario y botón

  <div id="test">
    <label for="campo">Por favor, si eres un ser humano deja este campo en blanco</label> 
    <input type="text" id="campo" name="campo" />
  </div>
</form>
 

Dado que el objetivo es que ningún ser humano lo rellene, aplicándole en la hoja de estilo display:none el usuario ni siquiera será consciente de la prueba. El robot, al contrario, incluirá un valor como para el resto de campos.

Así, en la página que reciba el formulario, basta con incluir un código como éste:


if(empty($_POST['campo'])){
  
  /* Es un ser humano, luego procesamos los datos, enviamos el correo o lo que necesitemos */ 

} /* Si la variable ha llegado con algún valor elegantemente hacemos caso omiso */
 

Simple, efectivo y accesible. Muchas gracias, señor Martin.

Esta entrada se publicó el 29 de agosto de 2012, se archivó en , y fue etiquetada como . Autor: Saúl González Fernández. Hay 2 comentarios ›.

Comentarios

  1. fernando dice:

    Buen código. No está de más usar un antispam, un Akismet o Recapcha.

  2. Saúl González Fernández dice:

    @fernando: Akismet está pensado para filtrar comentarios en blogs, foros y similares; es difícil emplearlo, por ejemplo, en un formulario de acceso a una aplicación web. En cuanto al reCAPTCHA, precisamente la idea es evitar emplearlo por los problemas de accesibilidad y usabilidad que plantea.

¿Algún comentario?

* Los campos con un asterisco son necesarios

Últimos proyectos

© Digital Icon, S.L., 2007 – 2017