TUTORIAL: Creando un captcha con GD

Share Button

A continuación veremos un pequeño tutorial para saber cómo crear un sencillo captcha en PHP utilizando la librería GD la cual nos permite manejar gráficos en dicho lenguaje; en este caso será utilizada para la creación de nuestro captcha.

Para poder iniciar habrá que tener instalada la librería GD, ésta ya se encuentra incluida en PHP 4.3.0 solo hay que habilitar la extensión para el dll “php_gd.dll” (“php_gd2.dll” a partir de la versión 4.3.2) en el archivo “php.ini”.

Si necesitas más referencias sobre la instalación de la librería, puedes revisar las siguientes ligas:
http://www.php.net/manual/es/image.installation.php
https://bitbucket.org/libgd/gd-libgd/downloads

Una vez instalada la librería, procederemos con la creación de la clase “clsCaptcha.php”. En esta clase definiremos un atributo privado que llamaremos $caracteres que usaremos en el método “gentTexto” y generaremos un String aleatorio que tendrá como longitud 5.

captcha01

En seguida definiremos la función “captcha” que también servirá como el constructor de la clase y que recibirá como parámetros “$w” y “$h” los cuales representan el ancho y el alto del cuadro del captcha que obtendrá del método texto la cadena aleatoria y la guardará en una variable de sesión que llamaremos “$_SESSION[‘captcha’]”, esto para poder comparar más adelante la cadena con lo que ingrese el usuario.

captcha02

Dentro del mismo constructor utilizaremos las funciones de la librería GD; primero la función “imagecreate” para crear una imagen con la resolución que le especifiquemos, ésta por sí misma no nos asigna un color de fondo por lo que para agregarle un color haremos uso de la función “imagecolorallocate”, la cual recibe como parámetros la imagen a la que se asignará el fondo y los valores del componente RGB que forman su color.

captcha03

Definiremos 3 colores usando la función “imagecolorallocate”, uno de fondo, otro del texto y por último el de las líneas que cruzarán la imagen. Acto seguido crearemos las líneas que atraviesan la imagen para dificultar el reconocimiento del texto; para lograrlo usaremos la función “imageline”. Después, para crear el texto usaremos la función “imagestring”. Así mismo, se usó la función “rand()” para crear aleatoriamente los colores y la ubicación de la coordenada “Y” de las líneas.

captcha04

Esta clase regresará una imagen así que deberemos indicarle al navegador mediante él envió de headers, que el contenido a mostrar será una imagen tipo PNG: “header( “Content-type: image/png” );”, por lo que añadiremos lo siguiente al constructor.

captcha05

El siguiente paso será crear el archivo “captcha.php” donde se requerirá la clase “clsCaptcha.php” para poder hacer uso del captcha.

captcha06

Finalmente creamos el archivo HTML llamado “formulario.php” el cual contendrá un formulario Web; es importante verificar que se haya hecho el submit, si fue así haremos la comparación del texto que ingresó el usuario con el del captcha.

captcha07

Al final el captcha se verá como se muestra en la siguiente imagen.

captcha08

Conclusión

En base a esto podemos concluir que el crear un captcha puede resultar bastante sencillo ya que la dificultad varía del diseño que se le quiera dar o de la complejidad de lectura.

De igual manera si se necesita implementar un captcha en un sitio web, se puede utilizar esta opción que se acaba de explicar u optar por otras alternativas como “reCaptcha” de Google, el cual es gratuito y se puede implementar en cualquier página web.

Acerca del Autor

Angel Francisco Castro Chaparro es Ingeniero en Sistemas Computacionales graduado del Instituto Tecnológico de la Laguna. Actualmente es desarrollador .NET en DW en el área de software a la medida. Puedes contactarlo al correo info@dwtraining.mx

Publicado por DW Training

Publicado por

DW Training SC

Una empresa de IT que traslada su experiencia técnica a través de sus planes de entrenamiento. +20 años de experiencia en el ramo nos respaldan.

Deja un comentario