Enviado por b@cHo 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.
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
Posts Relacionados
- Upload Form en PHP En esta entrada se explicará como hacer un form (ya...
- Enviar un correo con Adjunto mediante PHP Como dice el título de la entrada, hoy abarcaremos de...



Hola, yo lo estoy usando pero recibi reportes de que no funciona bien en internet explorer… ¿Alguna idea?
UsandoSeguramente es porque el servidor tiene desactivada la opcion header, y por lo mismo no puedes indicar que es una imagen, provocando que no se muestre la imagen apropiadamente.
Aunque ten en cuenta que todo el contenido de kernelerror es con motivo EDUCACIONAL, y no se supone que sea usado en sitios webs – mas info en avisos legales
UsandoCualquier iamgen, de fondo? Claro!, solamente si es un gif en la linea 2 cambialo por, create FROM gif envez de createfrompng
Usando¡Gracias! cualquier sugerencia de tema, por favor ahórranos proceso mental, enviándola al apartado de Contacto (pestañas superiores, la última)
Usando