Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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);
?>sim, e estão na mesma pasta
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.
agora deu certo, acho que tinha escrito o nome da fonte errado...
valeu, brigadão
você tem a imagem captcha.png e a fonte anonymous.gdf ?