Ir para conteúdo

POWERED BY:

Arquivado

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

leo_02

[Resolvido] Criação de captcha

Recommended Posts

Segui um tutorial para a criação de um captcha em PHP, mas a imagem não aparece no navegador. Nenhum erro é apontado.

<?
header('Content-type: image/jpeg');
session_start();



   $image = imagecreate(200,70);
   $fonte = 'arial.ttf';
   $corLetra = imagecolorallocate($image,255,255,255);
   $corLetra = imagecolorallocate($image,255,0,0);

   $tFonte = '50';
   $qtLetras = 4;

   $palavras = substr(str_shuffle("AaBbCcDdEeFfGgHhIiJjLlKkMmNnOoPpQqRrSsTtUuVvWwXxZzYy0123456789"),0,$qtLetras);

   $_SESSION['captchaCadastro'] = $palavras;

   for($i=1;$i<=$qtLetras;$i++){
       imagettftext($image,$tFonte,rand(-30,25),(($tFonte*$i)/1.5),$tFonte+5,$corLetra,$fonte,substr($palavras,($i-1),1));
   }
   imagejpeg($image);
   imagedestroy($image);
?>

 

Coloquei a fonte arial apenas para teste e ela está na mesma pasta do documento. Chamo a imagem por outro arquivo desse modo:

 

<img src="captcha/captcha.php" />

 

O caminho do arquivo também está correto. Qual é o erro? Desde já agradeço pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, aqui eu desabilitei o header() e recebi um erro de fonte inválida.

 

Claro, eu não tinha o arquivo arial.ttf junto do script. Foi só copiar da pasta de Fontes do Windows e funcionou.

 

Não seria esse seu problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, aqui eu desabilitei o header() e recebi um erro de fonte inválida.

 

Claro, eu não tinha o arquivo arial.ttf junto do script. Foi só copiar da pasta de Fontes do Windows e funcionou.

 

Não seria esse seu problema?

 

O arquivo está na pasta. Isso é o mais estranho não dá erro, mas a imagem não aparece pra mim. Você está usando o Wamp Server?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, por preguiça estou usando o XAMPP :yay:

 

Experimenta habilitar/exibir os erros do script adicionando no início:

 

ini_set( 'display_errors', TRUE );

error_reporting( E_ALL | E_STRICT );

Veja se te aparece alguma coisa.

 

Num primeiro momento, uma coisa que me vêm à cabeça seria que a GD não está habilitada. Se for verdade, você deverá ver um Undefined function imagecreate()...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara valeu mesmo pela ajuda. O código realmente não está com erros por isso eles não aparecem. O problema é que essa função "imagejpeg" não coloca a imagem no meu navegador por algum motivo. Também já dei uma olhada nessa questão da GD e acho que talvez o seu tenha funcionado normalmente por ser o XAMPP, já que o Wamp Server, mesmo com a opção habilitada no php.ini, não cria a imagem. Vou baixar o XAMPP pra ver se é isso mesmo. Depois posto aqui se funcionou. Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo com o XAMPP, a imagem não apareceu aqui. No entanto, tava pesquisando e encontrei uma forma de gerar a imagem para dentro da pasta e o código ficou assim:

 

<?php
session_start();

   $image = imagecreate(200,70);
   $fonte = 'arial.ttf';
   $corLetra = imagecolorallocate($image,255,255,255);
   $corLetra = imagecolorallocate($image,255,0,0);

   $tFonte = '50';
   $qtLetras = 4;

   $palavras = substr(str_shuffle("AaBbCcDdEeFfGgHhIiJjLlKkMmNnOoPpQqRrSsTtUuVvWwXxZzYy0123456789"),0,$qtLetras);

   $_SESSION['captchaCadastro'] = $palavras;

   for($i=1;$i<=$qtLetras;$i++){
       imagettftext($image,$tFonte,rand(-30,25),(($tFonte*$i)/1.5),$tFonte+5,$corLetra,$fonte,substr($palavras,($i-1),1));
   }
   imagejpeg($image, "captcha.jpg"); //aqui a imagem "captcha.jpg" é criada para dentro da pasta
   imagedestroy($image);

?>

 

E dentro do arquivo que chama a imagem coloquei assim:

 

<?php include "captcha.php"?><img src="images/captcha.jpg">

 

Dessa forma o arquivo php é executado toda vez que a página é atualizada, gerando outro captcha que susbtitui a imagem anterior. Assim, o arquivo não fica pesado e a funcionalidade do captcha é garantida. Valeu pela atenção Bruno Augusto. Problema resolvido.

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.