PHP Captcha code
En este artículo vamos a ver como disponer de un Captcha dinámico y aleatorio con PHP empleando sesiones y las posibilidades que tiene PHP para la creación de una imagen con ese texto aleatorio, evitando así el spam en nuestros formularios.
Para disponer de este campo para introducir el captcha generado aleatoriamente con PHP necesitaremos crear un archivo PHP que le llamaremos «captcha.php» con el siguiente contenido:
<?php session_start(); $ranStr = md5(microtime()); $ranStr = substr($ranStr, 0, 6); $_SESSION['cap_code'] = $ranStr; $newImage = imagecreatefromjpeg("cap_bg.jpg"); $txtColor = imagecolorallocate($newImage, 0, 0, 0); imagestring($newImage, 5, 5, 5, $ranStr, $txtColor); header("Content-type: image/jpeg"); imagejpeg($newImage); ?>
En el código anterior estamos generando una cadena aleatoria de 6 caracteres que guardamos en sesión y además la añadimos a una imagen que hace de fondo que tenemos en el servidor.
Luego en nuestra página donde tengamos el formulario al cual le queremos añadir un captcha, añadiremos el campo donde se escribirá el contenido del captcha más el captcha:
<input type="text" name="captcha" id="captcha" maxlength="6" size="6"/> <img src="captcha.php"/>
Como estamos utilizando sesiones de PHP necesitaremos añadir la siguiente linea al principio del documento:
session_start();
Y el código que recoge o comprueba lo que se ha introducido en el campo del captcha debe ser algo como lo siguente:
if (isset($_POST['submit'])) { if ($_POST['captcha'] == $_SESSION['cap_code']) { // Captcha verification is Correct. Do something here! echo '<p>El captcha introducido es correcto</p>'; } else { // Captcha verification is wrong. Take other action echo '<p>El captcha introducido no es correcto</p>'; } }
En este caso tenemos un botón con name=»submit» que al pulsarlo procedemos a validar el campo con name=»captcha» que si es igual al texto guardado en la sesión, el código introducido será correcto, en caso contrario no.
Muy bueno, solo tengo un incoveniente al momento de utilizarlo, las letras me aparecen muy pequeñas en la imagen no se alcanzan a ver
Hola,
Los tamaños se pueden cambiar a través de los archivos css.
Saludos