Implementación de imágenes CAPTCHA en PHP

16Dic08

Para aquellos que cuenten con el servidor XAMPP, ya tendrán las librerías PEAR disponibles para usar en nuestros desarrollos. La primera vez que quise utilizar estas librerías, pude ver que si bien contaba con una carpera PEAR dentro de la carpeta PHP, me daba errores cada vez que las incorporaba a mis scripts. El tema pasaba porque tenía que instalar la librería antes de usarla 😉

Vamos a ver, entonces,  que tenemos que hacer primero para poder instalar PEAR en nuestro servidor XAMPP:

  1. Descargar XAMPP si no lo tenemos ya instalado.
  2. Desde el símbolo del sistema, vamos al directorio C:\xampp\php
  3. Ejecutar el archivo go-pear.bat tipeándolo en el símbolo del sistema. A continuación se iniciará el proceso de instalación que podrá tardar algunos segundos.
  4. Una vez instalada la librería PEAR, debemos actualizarla.  Con el símbolo del sistema abierto, tipeamos pear upgrade PEAR, y luego de unos segundos, ya lo tendremos actualizado a la última versión.

Una vez hecho lo anterior, ya podremos incorporar las librerías PEAR a nuestros scripts. Vallamos entonces,  a ver cómo hacemos para implementar imágenes captcha en PHP utilizando la librería PEAR.

Las imágenes CAPTCHA, son aquellas que aparecen en algunos formularios como parte de un proceso de validación. Es muy común  verlas en el registro de una cuenta de correo de hotmail o google, por ejemplo.

Google captcha
Google captcha

Las CAPTCHA vienen a dar una solución de seguridad en los procesos de registros de usuarios y otras validaciones, pues garantizan en cierta medida que es una persona la que esta llevando adelante el proceso de registro y no un software que carga los datos del formulario en forma automatizada.

Un formulario con CAPTCHA
Un formulario con CAPTCHA

Nuestro desarrollo está formado por dos archivos: index.php y captcha.php. El primero se encarga de mostrar el formulario y cargar el archivo captcha.php que dentro del formulario es tratado como un archivo de imagen (en vez de mostrar una imagen dentro del formulario, ejecuta el script captcha.php).

En el formulario, se debe ingresar un texto que sea igual al que muestre la imagen captcha, de ésta manera se estará cumpliendo con el propósito de que sea una persona el que ingresa la datos.

Al presionar el botón enviar,  vuelve al mismo archivo index.php, pero ésta vez, observando los valores de variables de sesión que fueron creadas en la primera llamada al script, muestro un mensaje que indica que se ha tipeado un texto que es el mismo que aparece en la imagen CAPTCHA.

Además  de éstos dos scripts, tenemos una carpeta (a la que llamaremos fuentes) que contendrá la fuente que usará el texto de la imagen captcha, en nuestro ejemplo,  el archivo de la fuente que usaremos será corbelb.ttf, pero ustedes podrán usar las que más les guste.

Bueno, aqui voy con el archivo index.php:

<?
session_start();

// verifico si existe $enviar
if (isset($_POST[‘enviar’])){

// La variable de sesion $textoImagen es creada  en el archivo captcha.php
// al momento de generar la imagen.
// Verifico si $textoImagen existe
if ($_SESSION[‘textoImagen’] == $_POST[‘texto’]){
echo ‘<li>correcto’;
exit;
} else {
echo ‘<li>incorrecto’;
}
}
?>
<form method=’post’>
<table border=’1′ cellspacing=’0′ cellpadding=’5′ align=’center’>
<tr>
<td>Ingrese su nombre</td>
<td><input type=’text’ id=’nombre’ name=’nombre’></td>
</tr>
<tr>
<td>Ingrese su apellido</td>
<td><input type=’text’ id=’apellido’ name=’apellido’></td>
</tr>
<tr>
<td>Ingrese texto de la imagen</td>
<!– El archivo captcha.php genera la imagen –>
<td><img src=’captcha.php’><br/><input type=’text’ id=’texto’ name=’texto’></td>
</tr>
<tr>
<td colspan=’2′ align=’center’><input type=’submit’ id=’enviar’ name=’enviar’><input type=’reset’></td>
</tr>
</table>
</form>

Y acá está el archivo captcha.php:

<?
// El archivo captcha.php genera la imagen con texto incorporado.

session_start();

// Incorporacion de las librerias PEAR para la generación de imágenes captcha.
require_once ‘Text/CAPTCHA.php’;

// Creo una instancia del objeto Text_CAPTCHA
$captcha = Text_CAPTCHA::factory(‘Image’);

// Creo un array con los valores para la generación de la imagen
$opcionesImg[‘font_size’] = ’24’;
$opcionesImg[‘font_path’] = ‘./fuentes/’;
$opcionesImg[‘font_file’] = ‘corbelb.ttf’;
$opcionesImg[‘text_color’] = ‘#660000’;
$opcionesImg[‘lines_color’] = ‘#FF9966’;
$opcionesImg[‘background_color’] = ‘#FFFFCC’;

// Creo la imagen (pero no la muestro todavía) con los valores especificados en el array
$captcha->init(200,70,NULL,$opcionesImg);

// El texto mostrado en la imagen lo cargo en la variable de sesión $textoImagen
$_SESSION[‘textoImagen’] = $captcha->getPhrase();

// Cargo la imagen a una variable para luego mostrar la variable
$imagen = $captcha->getCAPTCHAAsPNG();

if (PEAR::isError($imagen)){
printf(‘Error: %s’,$imagen->getMessage());
exit;
}

// Muestro la imagen
echo $imagen;
?>

Los scripts son bastante simples y creo que los he comentado lo suficiente como para poder entenderlo sin mas.



2 Responses to “Implementación de imágenes CAPTCHA en PHP”

  1. Gracias por el Script

    Saludos

  2. 2 jorge

    ojala que funcione este correo


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: