jun 13, 2009

Enviado por en PHP, Programacion

Creando un CAPTCHA

Pués debido a mi entrada anterior, me gustaria dar a entender como se crean imagenes con PHP y para que nos sirven

Captcha es el acrónimo de Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos).

El codigo (captcha.php)

Primero que nada, el codigo (diferente al de la entrada anterior):

session_start();

$string = substr(md5(microtime() * mktime()),0,3);
$captcha = imagecreatefrompng("fondo.png");
$color = imagecolorallocate($captcha, 0, 0, 63);
$linea = imagecolorallocate($captcha,63,63,63);
imageline($captcha,0,0,39,29,$linea);
imageline($captcha,55,0,0,29,$linea);
imageline($captcha,40,0,64,29,$linea);
imagestring($captcha, 5, 10, 5, $string, $color);
$_SESSION['CAPTCHA'] = $string;
header("Content-type: image/png");
imagepng($captcha);

Básicamente lo que hace esto, es crear una imagen mediante GD a partir de una imagen PNG existente (60×25), después de eso añadirle lineas para confundir a un bot, y crear un texto basado a partir del MD5 del tiempo y usamos la función substr para sacar el numero maximo de caracteres 3 en este caso y finalmente, define la sesión creada al principio bajo el nombre de “CAPTCHA” para ser usado en un formulario posteriormente.

Esta es la imagen usada:
fondo

La prueba (formulario.html y prueba.php)

Ahora les mostrare un formulario muy sencillo para que vean como implementarlo a su formulario.

El HTML


<form action="prueba.php" method="POST"><img src="captcha.php" alt="" />
Introduce el Código

<input name="introducido" type="text" /> <input name="Enviar" type="submit" value="Enviar" /> </form> 

Como pueden ver, se inserta el captcha.php como una imagen y se crea un input con el nombre deseado (en este caso introducido) para despues comparar el POST del formulario con la sesión del CAPTCHA

Aqui esta el “motor” del formulario” (llamado prueba.php)


<?
 session_start();
if (isset($_POST['Enviar'])) {

if( $_SESSION['CAPTCHA'] != $_POST['introducido'])
{
exit('Codigo Erroneo');
}
echo "Codigo Correcto";
}

else {
echo "No accedas directamente a esta pagina.";
}
?>

Ahora si, compara con una función if, la sesión CAPTCHA con lo escrito en el formulario en el campo nombrado introducido

A continuación el ejemplo.

    Posts Relacionados

    1. Verga!!! Muy buena esa, ahora se como funciona esa herramienta xD… uno puede colocar cualquier imagen?.

      Usando Unknown Unknown en Unknown Unknown
    2. Muy bien explicado ;)!

      Usando Unknown Unknown en Unknown Unknown

    Dejar una respuesta

    Debes ser Alojarse para enviar un comentario.