Evitar spam en los formularios sin captcha

La solución en la mayoría de los formularios al spam es simplemente poner captcha pero la verdad es hay algunos trucos que nos puedes ayudar a evitar toda esa cantidad de emails basura que rellenan nuestros formularios sin complicarnos mucho la vida y sin que los usuarios tengas que pasar por rellenar un captcha.

El campo mágico que todos los bots rellenan es el campo email, suele ser obligatorio por norma general y así se aseguran que ese mail llegue a su destinatario. Lo que podemos hacer es mostrar ese campo solamente a los bots mientras que a los usuarios mostrarle otro que sea campook, de esta forma todos los bots que rellenen el campo email serán spam.

¿Como ocultar el campo email solo a los usuarios? Lo primero que se nos puede venir a la cabeza es poner type=»hidden» pero sería un error ya que esto lo detectarían los bots y no lo rellenarían la clave es poner una clase a este campo en los formularios y ocultarlo desde nuestra hoja de estilos.

En el formulario pondremos:

<form  method="post">
<input class="claseparaocultar" type="text" name="email" placeholder="Tu email" />
<input class="classedelinpput" type="text" name="campook" placeholder="Tu email" />
<form>

En la hoja de estilos:

.claseparaocultar {display:none}

Después con php lo único que tenemos que hacer antes de la función mail es detectar que nos llega por POST desde el campo email y si tiene algo diferente a «» pues devolver un mensaje como por ejemplo : Se ha detectado este mensaje como spam, en caso de no ser así contacte con … .

Campos de selección en html

A la hora de realizar un select con distintas opciones tenemos que tener en cuenta varias características principales de estas etiquetas, a saber:

Entre las etiquetas select irán las opciones para seleccionar.
El atributo size de la etiqueta select indica el número de opciones que se mostrarán en el select.
El atributo multiple nos permitirá que el usuario seleccione varias opciones.

Ejemplo:

<SELECT NAME="Provincias" MULTIPLE> 
   <OPTION VALUE="l">Lugo</OPTION> 
   <OPTION VALUE="c">Coruña</OPTION> 
   <OPTION VALUE="v">Vigo</OPTION> 
</SELECT> 
 
 
<SELECT NAME="Provincias" SIZE="2"> 
   <OPTION VALUE="l">Lugo</OPTION> 
   <OPTION VALUE="c">Coruña</OPTION> 
   <OPTION VALUE="v">Vigo</OPTION> 
</SELECT>

Esto da el siguiente resultado: