En esta entrada os dejo el código fuente y la explicación de cómo funciona un sistema de protección sencillo contra Spam tipo Captcha.
Actualmente existen sistemas más avanzados, por reconocimiento de imágenes, mediante patrones, etc.
Todos ellos bajo la misma premisa de funcionamiento, y es, evitar que cualquier robot envíe mensajes de correo de forma masiva, es por ello que tenemos que demostrar mediante el captcha y los caracteres en este caso, que somos personas.
Este ejemplo, resume la filosofía de funcionamiento. Aplicable si deseamos convertirlo a otros lenguajes.
<?php session_start(); # iniciamos la sesion $numero = rand(1000,9999); # generamos un numero aleatorio $_SESSION['codigo'] = $numero; # guardamos el numero en una variable de sesión header("Content-type: image/png"); # declaramos im con la creación de una imagen $im = imagecreate(80, 25); # indicamos el color del fondo (RGB) $fondo = imagecolorallocate($im, 0, 0, 0); # el color del fondo seria blanco, se puede editar # indicamos el color del texto (RGB) $texto = imagecolorallocate($im, 255, 255, 255); # el color de las letras seria blanco, se puede editar # creacion del texton dentro de la imagen imagestring($im, 12, 20, 5, $_SESSION['codigo'], $texto); # se crea la imagen, la imagen será formato PNG imagepng($im); ?>
El código superior lo guardamos en un fichero php, lo llamamos como deseemos. Ejemplo: mi_captcha_palentino.php
El código inferior corresponde con un fragmento del formulario que deseemos enviar. Comentado línea por línea
<?php session_start(); # importante iniciar session al comienzo de la página if($_POST['enviar']){ session_start(); # iniciamos la sesion if($_POST['captcha'] == $_SESSION['codigo']) # comprobamos que el campo captcha, sea igual que el codigo generado { echo("El Código introducido es correcto"); # A partir de esta condición podemos seguir realizando comprobaciones. }else{ echo("El código introducido es INCORRECTO"); } } ?> <img src="mi_captcha_palentino.php"><br/> <!-- Se puede observar dónde se realiza la inclusón del fichero superior. --> <form name="form1" method="post" action=""> <!-- Método de envío mediante POST --> <input type="text" name="captcha"> <input type="submit" name="enviar"> </form>
Te he fusilado el código para un proyecto de la universidad. Ha funcionado a la perfección. Gracias!
y si randeas los colores queda mas seguro gracias men
Gracias!! jeje