Es habitual que se nos cuele mucho spam por formularios, y es que los spamers, suelen crear aplicaciones para enviar miles y miles de correos por formularios vulnerables, que envían copia del e-mail al autor, por ejemplo. Voy a iniciar un pequeño tutorial para crear un captcha, para “obligar a los usuarios a demostrar que son humanos”.
Primera Parte
<?php session_start(); //Creamos una cadena aleatoria de caracteres $md5 = md5(microtime() * mktime()); //Reducimos a 5 los caracteres $string = substr($md5,0,5); ?>
Crear una imagen de fondo
<?php //creamos un fondo de imagen y lo subimos, luego con la funcion imagecreatefrompng, la pasamos al captcha $captcha = imagecreatefrompng("./imagencaptcha.png"); //podemos configurar los colores para las lineas $black = imagecolorallocate($captcha, 0, 0, 0); $line = imagecolorallocate($captcha,233,239,239); //y para evitar las arañas le añadimos las lineas imageline($captcha,0,0,39,29,$line); imageline($captcha,40,0,64,29,$line); ?>
Insertamos el texto en la imagen
<?php //insertamos la cadena creada aleatoriamente en la imagen imagestring($captcha, 5, 20, 10, $string, $black); //como no, encriptamos y almacenamos el valor de la cadena en una variabe sesion $_SESSION['key'] = md5($string); //devolvemos la imagen para crearla header("Content-type: image/png"); imagepng($captcha); ?>
Comprobamos el valor que ingresa el usuario
<?php session_start(); if(md5($_POST['code']) != $_SESSION['key']) { //lo enviamos a la página de error echo "header('Location: error.php');"; } else { //lo enviamos a donde queríamos ha puesto bien el captcha echo "header('Location: buena.php');"; } ?>
La parte de la creación del formulario en este caso, es la más básica.
8 comentarios