• Como

    Como Hacer un Sistema Captcha con PHP

    En este tutorial haremos una función en PHP que generara una seria de letras y números elegidos de manera aleatoria y las plasmara en una imagen, para luego en un formulario hacer la comparación de la imagen generada con lo que el usuario vea e ingrese.

    Los códigos captcha empezaron a utilizare en el año 2000 para evitar que los robots puedan registrarse en cuentas de correo electrónicos, foros, portales o participar en encuestas, que solo el humano puede hacerlo.

    Vamos a trabajar con dos archivos, captcha.php e index.php en el primero se generara la imagen aleatoria y en el segundo se comparara la imagen generada con lo que el usuario ingrese en la caja de texto:

    1. captcha.php

    Iniciamos session y creamos una función que generara los números y letras aleatorios.
    Luego en $cadena declaramos los números y letras para que la imagen generada obtenga su contenido.

    Después en un for generamos la cadena de números/letras de manera aleatoria con la función rand.

    <?php
    session_start();
    function texto($ancho)
    {
         $cadena = "0123456789abcdefghijkmnñlopqrstwxyz";
         for($i = 0; $i<$ancho;$i++)
         {
              $muestra .= $cadena{rand(0,35)};
         }
    	 return $muestra;
    }

    Ahora creamos una variable de session que nos permita guardar el texto que se utilizara en el captcha, donde llamaremos la funcion texto() creada anteriormente, tambien debemos definir una imagen de fondo donde se plasmara el texto generado.

    // Define el ancho del texto usando un parametro (5) para la función creada anteriormente.
    $_SESSION['captcha'] = texto(5);
    
    // La imagen gif de fondo.
    $captcha = imagecreatefromgif("imagen.GIF");
    
    // La localizacion de la imagen, lo dejamos en 0,0,0
    $letras = imagecolorallocate($captcha,0,0,0);
    
    // Unir el texto en la imagen gif creada.
    imagestring($captcha,5,16,7,$_SESSION['captcha'],$letras);
    
    // Pone la imagen en cabezera.
    header("Content-type: image/gif");
    
    // Muestra la imagen.
    imagegif($captcha);
    ?>

    2. index.php

    Ahora creamos el formulario donde colocaremos la imagen del captcha con un campo de texto donde se ingresa el texto y se compara con la variable de session que se creó en que parte de arriba, la imagen se coloca de la manera siguiente.

    Primero colocamos el código PHP, iniciamos sesión y declaramos $code que es el valor de lo que se ingrese en la caja de texto del formulario que haremos a continuación.

    Luego preguntamos si se presiono o no el boton de enviar, dentro de este if hacemos otro if donde comparamos el valor de la variable de sesión con el valor de lo que el usuario ingreso en la caja de texto y mostramos las respuestas correspondientes.

    <?php
    session_start();
    $code = trim($_POST['code']);
    if(isset($_POST['save']))
    	{
    		if($_SESSION['captcha'] == $code)
    		{
    			echo "<span style='color:green'>Es correcto el captcha ingresado</span>";
    		}
    		else
    		{
    			echo "<span style='color:red'>Es incorrecto el captcha ingresado</span>";
    		}	
    	}
    ?>

    Ahora creamos el formulario, prestad atención a la etiqueta img donde en src llamamos al archivo captcha.php que creamos al principio.

    <form  name="form1" method="post" action="">
       <img src="captcha.php" width="100" height="30" vspace="3"><br /> 
       <input name="code" type="text"/><br />
    <input type="submit" name="save" value="Enviar"><br />
    </form>
  • Edwind Pineda

    Soy Autor/Editor de Tursos, estudio la Ingenieria de Sistemas y trabajo como programador PHP freelance, sigueme en Twitter o escribeme al m@edwindpineda.com .

  • Tal vez te interese
Acerca de

WebTursos es un blog de tutoriales, articulos y recursos para diseñadores y desarrolladores web. mas...

Suscribete

Suscríbete para recibir los últimos posts directamente en tu bandeja de entrada: