Ejemplo de capcha para formulario web con php

En este post voy a explicar la creación de un simple capcha para formulario web con php.

capcha-ejemplo

Ejemplo de uso de un capcha

Definicion de Capcha

Consiste en que el usuario introduzca correctamente un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta, por lo que solamente el humano podría hacerlo.

Los captchas son utilizados para evitar que robots, también llamados spambots, puedan utilizar ciertos servicios. Por ejemplo, para que no puedan participar en encuestas o foros de discusión, registrarse para usar cuentas de correo electrónico (o su uso para envío de correo basura) y más recientemente, para evitar que un bot de este tipo pueda enviar correo basura (el remitente debe pasar el test antes de que se entregue al destinatario).

Ejemplo de capcha para formulario web con php

En primer lugar nos debemos bajar el fichero capcha.php, este archivo es el encargado de generar el conjunto de caracteres y mostrarlos en una imagen distorsionada. Este fichero lo debemos de dejar en alguna carpeta del servidor web, por ejemplo en la carpeta de elementos de administración admin.

En alguna parte del formulario donde queremos añadir el capcha debemos de añadir lo siguiente:

capcha-formulario

El campo de entrada capcha sera el encargado de enviar el texto introducido por el usuario. La imagen del capcha es una llamada al archivo php, el archivo esta en el servidor en la direccion /admin/capcha.php, si probamos de abrir el formulario de la pagina veremos como nos va generando de manera aleatoria una secuencia de 5 letras y números:

capcha-aleatorio

Ahora solo queda comprobar en la validación del formulario que el campo introducido por el usuario equivale al generado por el archivo capcha.php, lo podemos hacer de la siguiente manera:

 if(strtoupper($_REQUEST["captcha"]) == $_SESSION["captcha"]){
   $_SESSION["captcha"] = md5(rand()*time());
	   //Capcha correcto, añadimos nuestro codigo de validacion
	 }else{
		   //Capcha incorrecto, añadimos el codigo de error
 }

 

Si el capcha ha sido correctamente introducido, añadimos el código para la validación del formulario, en caso incorrecto podemos mostrar un mensaje de aviso de capcha incorrecto.

Conclusión

Una solución muy simple pero muy efectiva para no recibir spam en los formularios web, el capcha no es muy difícil de leer y por tanto no supone un inconveniente muy importante para que el usuario termine enviando la solicitud.

Leave a Reply