repondendo ao MastersRoXuma validaçao simples, só com numeros, edite ao seu gosto... sei que é bem mais simples que aquelas com letras e numeros deformados com um fundo que pode confundir bots, mas funciona muito bem e a segurança é relativamente alta:
<?php
session_start();
$_SESSION['codigo'] = rand(1000,9999);
?>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Autenticação por Imagen</title>
</head>
<body bgcolor="#FFFFFF">
<form method="POST" action="auth.php">
<p><font size="2" face="Arial">Digite o código que aparece
na imagem: <img src="imgauth.php" align="baseline">
<input type="text" size="4" name="codigoimg">
<input type="submit" name="B1" value="OK"></font></p>
</form>
<br><br><br>
</body>
</html>
logico que vc pode (deve) colocar o seu formulário inteiro... nesse exemplo só está o lance da imagem mesmo... nao esqueça de abrir a sessão(aquela parte do começo é obrigatoria... no caso fiz com 4 digitos, mas pode ter mais...
bom, o imgauth.php é o arquivo que gera a imagem:
<?php
session_start();
$codigo = $_SESSION['codigo'];
if (!extension_loaded('gd')) { dl('php_gd2.dll'); };
$im = imagecreate(40,18);
$background_color = imagecolorallocate($im, 0, 0, 0);//cor de fundo
$text_color = imagecolorallocate($im, 130, 140, 120);//cor da fonte
imagestring($im, 15, 2, 2, "$codigo", $text_color);
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>
e o auth.php a resposta do formulario:
<?php
session_start();
header("Content-type: text/html");
if ($codigoimg == $_SESSION['codigo']) { echo"Código OK"; } else { echo"Código errado"; }
?>
bom, esse exemplo está bem didático... se vc tem alguma experiencia com php deve conseguir entende-lo sem nenhum problema, mas estamos aih
Edição feita por: Stormbringer, 09/09/2004, 17:07.