PHPCaptcha v1.0
Inicio::Configuración::Historial de Cambios::Descárgalo::Fondos y Fuentes::PHPPeru
EJEMPLO: Haga clic aquí para ver un ejemplo funcionando.

.: Descripción

No es necesario explicar lo que es un Captcha. Bastará con decir que el sistema sirve para distinguir humanos de computadoras a través de una imagen con un pequeño texto que el usuario debe introducir usando el teclado en un campo. PHPCaptcha es un script basado en PHP que sirve principalmente para evitar el spam en el envio de formularios. Su uso e implementación son muy sencillos.

.: Modo de utilización

Dado que la librería genera una imagen y no contenido HTML, el script en el que instanciemos el objeto Imagen no deberá tener ninguna otra salida al explorador. Caso contrario habrá error del lado del servidor PHP. Por lo tanto, todo lo que a continuación se explica deberá ser colocado en un archivo que exclusivamente genere la imagen del Captcha, digamos, un captcha.php. Lo iremos armando a lo largo de este tutorial.
Archivos que conforman la librería
El único archivo necesario para la ejecución básica del script es el archivo PHPCaptcha.lib.php que puede ser descargado del área de descargas. Además, para generar un captcha más personalizado puede definirse una carpeta de fuentes, de imágenes de fondo, así como un archivo con palabras que deban usarse como códigos para el sistema.
Inicio del script
Para usar la librería hay que incluir primero el archivo PHPCaptcha.lib.php en nuestro script, para luego instanciar la clase:
include_once "PHPCaptcha.lib.php";
$captcha = new Captcha;
El método constructor de nuestra clase sólo va a instanciarla, mas no efectuará ningún tipo de acción. Por lo tanto, no requiere ningún parámetro.
Generando nuestro captcha.
generaCaptcha ( ) PHPCaptcha fácilmente genera la imagen del captcha a través de este método. No requiere ningún parámetro. Sin embargo, el aplicar este método a la clase aún no muestra el contenido ni guarda ningún tipo de datos.
$captcha->generaCaptcha();
Obteniendo y guardando el código generado
guardaCaptcha ( ) Hasta ahora ya hemos generado en dos simples pasos el código de nuestro captcha, así como la imagen que mostraremos. Ahora, antes de enviar la imagen al navegador de nuestro visitante, tenemos que guardar el código para poder comparar después con lo que el usuario ingrese en neustro formulario. Para esto disponemos de dos formas:
  • Usando el método guardaCaptcha() que viene incluído en el script. Este procedimiento se realiza en base a las sesiones de PHP. Preferentemente se debe iniciar una sesión antes de ejecutar instanciar la clase (usando session_start()), pues en caso de que no se encuentre una sesión generada, el script tratará de iniciar una nueva. Previamente no debe haber ninguna salida al explorador (Nada de código HTML ni cookies o algún tipo de cabeceras). La forma de usar este método es:
    $captcha->guardaCaptcha();
  • Usando la propiedad $codigo que contiene el código generado. Esto puede ser especialmente útil si se desea conservar el código de algún otro modo diferente al de las sesiones, o usando un sistema propio para administrar estos datos de sesión. La forma de accesar esta propiedad es:
    $codigo $captcha->codigo;
Mostrar la imagen Captcha
muestraCaptcha ( ) El script genera la imagen en formato Jpeg. Al ejecutar este método la imagen es enviada al navegador y se terina la ejecución del script. La forma de usarlo es:
$captcha->muestraCaptcha();
Realizar la verificación una vez enviado el formulario
verificaCaptcha ( string $codigo [ , bool $mayusculas ] ) Si se guardó el código usando el método guardaCaptcha() descrito anteriormente, para realizar la comprobación del código Captcha podemos aplicar este método. Para usarlo no es necesario instanciar la clase, bastará con llamarlo de la siguiente manera:
procesa.php
En esta página recibimos el contenido de nuestro formulario, y usando el método en cuestión realizamos la
comprobación. En este caso, el nombre del campo en el que el usuario ingresó el código Captcha es captcha
if(Captcha::verificaCaptcha($_POST['captcha'])) {
    echo 
"Captcha correcto";
} else {
    echo 
"Captcha incorrecto";
}
Recuperar el código Captcha si se ingresó uno incorrecto
generaCaptcha ( bool $nuevo ) Si se guardó el código usando el método guardaCaptcha() descrito anteriormente, podemos recuperar el código generado la primera vez y volver a mostrárselo al usuario. Para esto, la función generaCaptcha() ya vista anteriormente acepta un único parámetro de tipo boolean que determina si se ha de generar un nuevo Captcha cada vez que se instancia la clase (true) o se debe buscar primero un Captcha guardado y mostrarlo (false). El valor por defecto es true:
# Si hay un Captcha generado anteriormente, debe buscarlo y mostrarlo.
$captcha->generaCaptcha(false);
Este ejemplo usa el mismo Captcha en cada nueva instacia de la clase. Recargue (Clic sobre la imagen) para ver el efecto:
Clic para recargar
Ahora, si se usó un sistema propio de sesiones o se almacenó de manera diferente el código, se puede definir el código de esta manera:
# Asignar un Captcha predefinido. Debe ser antes del método generaCaptcha()
$captcha->codigo "Captcha";
Pero... quiero ver un ejemplo!
Bien, aqui tienes el resultado del pequeño script captcha.php que hemos ido armando en este pequeño tutorial. El código completo es:
include_once 'PHPCaptcha.lib.php';

$captcha = new Captcha;

$captcha->generaCaptcha();
$captcha->guardaCaptcha();
$captcha->muestraCaptcha();
...y la forma de incluirlo en una página HTML es:
<img src="captcha.php"/>
Clic para recargar
Ejm... es todo?
No. Este script permite algunas opciones de configuración y presonalización. Si ya entendió el uso básico de PHPCaptcha puede pasar a la sección de Configuración y Personalización.
Esta web está hospedada en x10Hosting
Diseño y Programación por MyOkram ©2008
PHPeru.net es parte de MyOkram.com ©2008