Twitter Flickr Pinterest LinkedIn YouTube Google Maps E-mail RSS
formats

Captcha sencillo en PHP. Explicación.

Publicado en 25 enero, 2017, por en PHP.

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>

 

3 de respuestas

  1. Te he fusilado el código para un proyecto de la universidad. Ha funcionado a la perfección. Gracias!

  2. y si randeas los colores queda mas seguro gracias men

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Home PHP Captcha sencillo en PHP. Explicación.
© www.palentino.es, desde el 2012 - Un Blog para compartir conocimientos ...

Uso de cookies en mi sitio palentino.es

Este sitio web utiliza cookies para que tengamos la mejor experiencia de usuario. Si continúas navegando estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de la política de cookies

ACEPTAR
Aviso de cookies