Crear CAPTCHA con PHP
- 10/02/2011
- 4:30 pm
¿Que es una CAPTCHA?
Se trata de una prueba desafío-respuesta utilizada en computación para determinar cuándo el usuario es o no humano. Esto sirve para evitar spam en tu sistema, ya sea un sistema de comentarios, un foro, un blog.

Vamos a generar una imagen que va a contener 8 letras en la cual se va a guardar en una SESSION, después vamos a comprobar si lo que introducimos en el campo de texto es igual a la session, si es igual la captcha se escribió correctamente, si no es igual pide que vuelvas a intentar y te genera otra captcha.
La imagen
Primero vamos a crear una imagen con un texto aleatorio, esto lo va a hacer el archivo captcha.php que crea un texto alfanumérico aleatorio dentro de una imagen .gif
< ?php session_start(); function randomText($length) { $pattern = "1234567890abcdefghijklmnopqrstuvwxyz"; for($i=0;$i<$length;$i++) { $key .= $pattern{rand(0,35)}; } return $key; } $_SESSION['tmptxt'] = randomText(8); $captcha = imagecreatefromgif("bgcaptcha.gif"); $colText = imagecolorallocate($captcha, 0, 0, 0); imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText); header("Content-type: image/gif"); imagegif($captcha); ?> |
Formulario que valida la captcha
Vamos a mostrar la imagen generada en captcha.php en un formulario que pide introducir lo que dice dentro de la captcha en un input.
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <img src="captcha.php" width="100" height="30" vspace="3"/><br /> <input name="tmptxt" type="text" size="30"/><br /> <input name="btget" type="submit" class="boton" value="Verificar Codigo"/> <input name="action" type="hidden" value="checkdata"/> </form> |
Verificando la captcha
Una vez que apretamos el botón Verificar Código, se va a comparar lo introducido en el campo con la session que tiene guardada el texto que se utilizo en la captcha.
Antes de esto va a ver si existe la session ya que los bots aveces borrar la session una vez entrada a la web entonces si borran la session y dejan el campo vació daría como si aviamos puesto bien la captcha porque nada es igual a nada y por eso nos da true.
session_start(); if ($_POST['action'] == "checkdata") { if(isset($_SESSION['tmptxt'])){ // Comprobamos que este la session tmptxt if ($_SESSION['tmptxt'] == $_POST['tmptxt']) { // Si la cadena de texto introducida es igual a la imagen echo "Bienvenido"; } else { echo "Intentalo nuevamente"; } } else { echo "Error"; } exit; } |
Via | Unijimpe
Posts Relacionados
[…] This post was mentioned on Twitter by Francisco Manuel, Marco Fernando. Marco Fernando said: Crear CAPTCHA con PHP http://goo.gl/fb/5jhl3 […]