Cómo crear un Captcha en PHP

Cuando trabajas con formularios web, casi siempre es necesario colocar un captcha para evitar que robots envíen spam, lo que ayuda a reducir peticiones inútiles al formulario que se está creando.

Lo más fácil sería utilizar el sistema reCaptcha de Google, la adaptación resulta simple y el sistema es muy seguro, pero si no quieres utilizar servicios de terceros, puedes crear tu propio sistema de captcha con PHP.

Para esto vamos a crear dos archivos, uno llamado captcha.php y otro llamado ejemplo_captcha.php, los nombres pueden variar según tu proyecto.

Para el archivo captcha.php utilizaremos el siguiente código:

<?php <?php  session_start();
 //Se genera un string y se acorta a seis caracteres 
 $ranStr = substr( sha1( microtime() ),0,6); 
 //Se almacena el valor en una variable de sesión 
 $_SESSION['captcha'] = $ranStr; 
 //Se crea la imagen (esta debe existir) 
 $imagen = imagecreatefromjpeg( "fondo_captcha.jpg" ); 

// la funcion imagecolorallocate ( $imagen , rojo , verde , azul ) genera un color  
$colortext = imagecolorallocate($imagen, 0, 0, 400); 
 imagestring($imagen, 5, 30, 8, $ranStr, $colortext); 
 header( "Content-type: image/jpeg" );
 //Se crea la imagen 
imagejpeg($imagen); ?>

 

Este código es el que creará el captcha que se mostrará en el formulario, por medio de la función microtime que devuelve la fecha actual con microsegundos, reducida a seis caracteres. Esto se almacena en la variable $ranStr. Se utiliza una imagen de fondo en formato jpg para mostrar el código, esta imagen debe existir en el directorio donde están los otros dos archivos. Puedes descargar la imagen de fondo utilizada en este ejemplo:

Luego se le da color al texto y se crea la imagen con el código. Ahora pasamos al otro archivo, ejemplo_captcha.php, que tendrá el siguiente código:

<?php <?php  session_start(); 
//Variable con el resultado de la comparación 
$resultado =''; if(isset($_POST['codigo'])): 
//Si el codigo ingresado es correcto:  
if($_POST['codigo'] == $_SESSION['captcha']): 
$resultado = "Codigo correcto"; 
else: $resultado = "Codigo incorrecto, prueba nuevamente"; 
endif;  
endif;
?>
<!doctype html><html lang="en"> 
 <head> 
  <meta charset="UTF-8"> 
    <title>Ejemplo de Captcha con PHP</title> 
  <style type='text/css'> 
table tr td{ border:3px solid blue; text-align: center; } 
</style> </head> 
<body> 
<!-- Se asigna la misma página para procesar el resultado --> 
<form action="ejemplo_captcha.php" method='POST'> 
<table> <tr> <td><input type="text" name="codigo" required></td> 
<td><img src="captcha.php"/></td> 
</tr> 
<tr bgcolor="red"><td colspan="2">
<input type="submit" value="Comprobar"></td></tr> 
<tr><td colspan="2" id="resultado">
<?php echo $resultado; ?></td></tr> 
</table> </form>
 </body>
</html>

 

Aquí se muestra el formulario con el Captcha, se evalúa si el código ingresado es correcto o no y se muestra el mensaje correspondiente. Se debe tomar en cuenta que en el formulario se hace el proceso dentro de la misma página, si vas a cambiar el nombre de los archivos php, es necesario cambiarlo también en esta parte del código.

Puedes ver el formulario funcionando aquí.

Si tienes alguna duda o sugerencia, escríbela en los comentarios.

Grupo de WhatsApp: https://chat.whatsapp.com/Ch45FZaJcbxDb7WeHAOtAQ
Grupo de Telegram: https://t.me/Masterhacks_net

Donaciones
Gracias por apoyar el libre conocimiento!
Bitcoin: bc1q4sw9260twfcxatj8mjp7358cyvrf8whzlelyhj
Litecoin: LbFduJmHvQXcpCnwfUT7aJ4DYoWSL3iQw8
BCH: qqnkqcu8sa90zuuzd2nvdrslgdv3u5ta6cy4ch0rnq
Ethereum: 0xFb93D2a3c9d1A0b83EE629c2dE1725BCa192e581

Una respuesta a “Cómo crear un Captcha en PHP”

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *