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 … .