Jueves, Marzo 6th, 2008...22:26

Crear un captcha

Saltar a Comentarios

Es habitual que se nos cuele mucho spam por formularios, y es que los spamers, suelen crear aplicaciones para enviar miles y miles de correos por formularios vulnerables, que envían copia del e-mail al autor, por ejemplo. Voy a iniciar un pequeño tutorial para crear un captcha, para “obligar a los usuarios a demostrar que son humanos”.

Primera Parte
<?php
session_start();

//Creamos una cadena aleatoria de caracteres
$md5 = md5(microtime() * mktime());

//Reducimos a 5 los caracteres
$string = substr($md5,0,5);
?>

Crear una imagen de fondo

<?php

//creamos un fondo de imagen y lo subimos, luego con la funcion imagecreatefrompng, la pasamos al captcha
$captcha = imagecreatefrompng("./imagencaptcha.png");

//podemos configurar los colores para las lineas
$black = imagecolorallocate($captcha, 0, 0, 0);
$line = imagecolorallocate($captcha,233,239,239);


//y para evitar las arañas le añadimos las lineas
imageline($captcha,0,0,39,29,$line);
imageline($captcha,40,0,64,29,$line);
?>

Insertamos el texto en la imagen

<?php
//insertamos la cadena creada aleatoriamente en la imagen
imagestring($captcha, 5, 20, 10, $string, $black);

//como no, encriptamos y almacenamos el valor de la cadena en una variabe sesion
$_SESSION['key'] = md5($string);


//devolvemos la imagen para crearla
header("Content-type: image/png");
imagepng($captcha);
?>

Comprobamos el valor que ingresa el usuario

<?php
session_start();

if(md5($_POST['code']) != $_SESSION['key']){
//lo enviamos a la página de error
echo “header(’Location: error.php’);”;
}else{
//lo enviamos a donde queríamos ha puesto bien el captcha
echo “header(’Location: buena.php’);”;
}


?>

La parte de la creación del formulario en este caso, es la más básica.

2 Comentarios

  • Emilio
    Opera Opera 9.23 en Windows Windows XP
    Marzo 7th, 2008 at 19:20

    Excelente! Buscaba algo parecido porque lo que yo estoy haciendo ahora es justamente lo contrario: saltarme los captchas(o alguno de ellos) usando java. Gracias y felicidades por el blog!

    pd: Ahora tendré una bateria enorme de pruebas! :P

  • juanra
    Mozilla Firefox Mozilla Firefox 2.0.0.11 en Ubuntu Linux Ubuntu Linux
    Marzo 7th, 2008 at 21:17

    Me alegro de que te sirva, es un captcha sencillo pero eficaz

Dejar una respuesta

Register your domain name and build your site at UNI.CC