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.
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.
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.
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.
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.
El siguiente paso será crear el archivo “captcha.php” donde se requerirá la clase “clsCaptcha.php” para poder hacer uso del captcha.
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.
Al final el captcha se verá como se muestra en la siguiente imagen.
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