Captcha

  • Autor Autor Strings
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
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 edição por um moderador:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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 edição por um 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:.
 
No se ve la imagen 🙁 Ver o anexo 16541

Tienes mal ubicado el archivo. Tienes mal la linea
HTML:
<img src="captcha.php"></img>
si lo as puesto en alguna carpeta el archivo captcha.php utiliza
HTML:
<img src="/carpeta/captcha.php"></img>

Muchas gracias a todos por sus comentarios. ¿Habeis entendido las explicaciones de cada linea?
 
Voltar
Topo