Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jnejunior

[Resolvido] problemas com captcha

Recommended Posts

baixei um script de captcha, mas a imagem não é exibida... o que pode estar acontecendo?

<?php

// Inicializa os dados da session
session_start();

// Definir o header como image/png para indicar que esta página contém dados
// do tipo image->PNG
header("Content-type: image/png");

// Criar um novo recurso de imagem a partir de um arquivo
$imagemCaptcha = imagecreatefrompng("captcha.png")
or die("Não foi possível inicializar uma nova imagem");

//Carregar uma nova fonte
$fonteCaptcha = imageloadfont("anonymous.gdf");

// Criar o texto para o captcha
$textoCaptcha = substr(md5(uniqid('')),-9,9);

// Guardar o texto numa variável session
$_SESSION['session_textoCaptcha'] = $textoCaptcha;

// Indicar a cor para o texto
$corCaptcha = imagecolorallocate($imagemCaptcha,0,0,0);

// Escrever a string na cor escolhida
imagestring($imagemCaptcha,$fonteCaptcha,15,5,$textoCaptcha,$corCaptcha);

// Mostrar a imagem captha no formato PNG.
// Outros formatos podem ser usados com imagejpeg, imagegif, imagewbmp, etc.
imagepng($imagemCaptcha);

// Liberar memória
imagedestroy($imagemCaptcha);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos tentar assim:

 

Salve como function_CAPTCHA.php

<?php

/**
* função CAPTCHA para diferenciar humanos de computadores
*/

function CAPTCHA(){

   // iniciou a sessão ?
   if(!isset($_SESSION)){

       // inicia a sessão
       session_start();

   }

   // definimos o header como image/png para que possamos visualizar a imagem
   header("Content-type: image/png");

   // retorna um identificador de imagem representando a imagem obtida através do nome de arquivo informado.
   $imagemCAPTCHA = imagecreatefrompng("captcha.png");

   // carrega uma nova fonte
   $fontCAPTCHA = imageloadfont("anonymous.gdf");

   // criamos o texto que irá na imagem
   $textoCAPTCHA = substr(md5(uniqid(rand(), true)), -9,8);

   // guardamos o texto em uma session
   $_SESSION['textoCAPTCHA'] = $textoCAPTCHA;

   // damos uma cor(RGB) para o texto
   $corCAPTCHA = imagecolorallocate($imagemCAPTCHA,255,180,50);

   // vamos escrever o texto na imagem.
   //imagestring("identificador da imagem","identificador da fonte","posição do texto na coordenada x",posição do texto na coordenada y","string texto","identificador de cor");
   imagestring($imagemCAPTCHA,$fontCAPTCHA,5,5,$textoCAPTCHA,$corCAPTCHA);

   // mostramos a imagem pronta
   imagepng($imagemCAPTCHA);

   // destruimos a imagem
   imagedestroy($imagemCAPTCHA);
}

// chamamos a função
CAPTCHA();

?>

 

A função está pronta, agora vamos testar se está tudo funcionando como deveria.

 

Salve como: test.php

<?php

// iniciou a sessão ?
if(!isset($_SESSION)){

   // inicia a sessão    
   session_start();

}
?>

<html>
<head>
<title>Validar CAPTCHA</title>
</head>
<body>

<!-- vamos testar se a nossa funcao esta funcionando corretamente -->
<form action="#" method="get">

   <!-- no lugar do nome da imagem, informamos o nome do arquivo com a funcao -->
   <img src="function_CAPTCHA.php" width="200" height="50" /><br /><br />

   <input type="text" name="captcha" />

   <input type="submit" value="Enviar" />

</form>

<?php

// foi setado ?
if(isset($_GET['captcha'])){

   // são iguais ?
   if( $_SESSION['textoCAPTCHA'] == $_GET['captcha']){

       echo "<h1>Ok - Valor Correto</h1>";

   }else{

       echo "<h1>Erro - Valor errado</h1>";

   }

}

?>

</body>
</html>

 

Vê se funcionou como deveria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.