Captcha

  • Autor Autor Strings
  • Fecha de inicio Fecha de inicio
S

Strings

Aqui os traigo un captcha realizado por mi y explicado.
Captcha.php
PHP:
<?php
session_start();
header('Content-Type: image/png'); // Tipo de imagen

$img = imagecreate(200,50); // Creo la imagen de 150x50
$color_fondo = imagecolorallocate($img, 255,255,255); // Este es el color del fondo(El primero siempre es el color del fondo)
$naranja = imagecolorallocate($img, 255,165,0); // Color naranja
$negro = imagecolorallocate($img, 0,0,0); // Color negro

// Crear puntos
for($i = 0; $i < 700; $i++):
    $x = rand(0,200); // Numero aleatorio de 0 a 200 (lo que mide el largo)
	$y = rand(0,50); // Numero aleatorio de 0 a 50 (lo que mide el alto)
    imagesetpixel($img, $x, $y, $negro); // Muestro los puntos
endfor;

// Crear numeros aleatorios
$number = '';
for($i = 0; $i < 6; $i++):
    $number .= substr('qQwWeErRtTyYuUiIoOpPlLkKjJhHgGfFdDsSaAzZxXcCvVbBnNmM1029384756',rand(0,62), 1); // Genero los numeros aleatorios
endfor;
    $font = array('fuente0.ttf','fuente1.ttf','fuente2.ttf','fuente3.ttf'); // Array con las distintas fuentes
    $_SESSION['captcha'] = $number;
	$number_rand = $font[rand(0,3)]; // Elige la fuente aleatoriamente
    imagefttext($img, 20, 0, 50, 35, $naranja, $number_rand, $number); // Muestro los numeros aleatorios

// Crear lineas horizontales
for($i = 0; $i < 3; $i++):
	$y1 = rand(0,50); // Numero aleatorio de 0 a 50 (lo que mide el alto)
	$y2 = rand(0,50); // Numero aleatorio de 0 a 50 (lo que mide el alto)
    imageline($img, 0, $y1, 200, $y2, $negro); // Muestro las lineas
endfor;

// Crear lineas verticales
for($i = 0; $i < 3; $i++):
	$x1 = rand(0,200); // Numero aleatorio de 0 a 200 (Lo que mide el ancho)
    imageline($img, $x1, 0, $x1, 50, $negro); // Muestro las lineas verticales
endfor;

imagepng($img);
imagedestroy($img); // Destruyo la imagen
?>

Index.php
PHP:
<?php
session_start();
if(isset($_POST['submit'])):
    if($_SESSION['captcha'] == $_POST['captcha']):
	    echo 'Captcha correcto';
	else:
	    echo 'Captcha incorrecto';
	endif;
endif;
?>
<form action="" method="post">
    <img src="/captcha.php"></img><br>
    <input name="captcha" placeholder="Introduce el captcha">
	<input name="submit" type="submit">
</form>
 
Última edición por un moderador:
Si, "Captcha incorrecto"
Se podria poner que apareciese error "El captcha esta vacio", pero es solo para comprobar que funciona el captcha.

Algunos siempre intentan buscar "la parte negativa"
 
Última edición por un moderador:
No, tranquilo. Solo era una pregunta. Si funciona, joya!
Si, "Captcha incorrecto"
Se podria poner que apareciese error "El captcha esta vacio", pero es solo para comprobar que funciona el captcha.

Algunos siempre intentan buscar "la parte negativa"
 
Funcionar, si funciona. Quiero opiniones sobre el diseño del captcha. ¿Os gusto?
 
A mi me parece correcto. Parametros normales. El diseño va en gustos (tampoco la pavada), pero si esta bueno.
 
Buen Aporte Colega 😀
 
No se ve la imagen 🙁 555.webp
 
No lo pruebo aún porque no tengo idea de cómo funciona php, espero empezar en estos días. Gracias por el aporte :encouragement:.
 
Atrás
Arriba