Evitar el spam en los formularios de la web

Si tienes una web con formularios para recabar información del usuario, pronto encontrarás que hay multitud de scripts que intentan enviar su spam con la esperanza de que sea automáticamente publicado. Una medida sencilla para evitarlo es introducir un pequeño código en javascript ya que la mayoría de sistemas automáticos no interpretan el javascript y no llegarán a realizarse los envíos de formulario.

Primero tenemos que añadir al formulario un campo oculto sin valor asignado, en este caso lo he llamado «check». Luego, después del formulario, añadimos una línea de javascript que asigna un valor al campo oculto, en este caso el valor es «ok». Con esto conseguimos que, al cargarse la página y si el navegador tiene javascript activado, el campo oculto del formulario tomará el valor «ok».

El formulario nos quedaría así:

<form name="miFormulario" method="post" action="">
Nombre: <input type="text" name="nombre"><br>
Apellidos: <input type="text" name="apellidos"><br>
<input type="hidden" name="check">
<input type="submit">
</form>

<script>
document.miFormulario.check.value = 'ok';
</script>

Finalmente, en el código de servidor que procesa el formulario, sólo tenemos que comprobar la existencia de nuestro campo de control oculto, con un código como el siguiente:

if($_POST['check'] == 'ok'){
   // proceso el formulario...
}

Con esto conseguimos que la mayoría de robots de spam de formularios no lleguen a enviar el formulario.