Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problema com a imagem no captcha (teste das letras) em um


ramongsilva

Pergunta

Ola Galera,

Estou implementando um teste captcha em um formulário. No meu PC roda perfeito, mais no servidor não está gerando a imagem do captcha, para teste.

O Teste está funcionando, porém a imagem não aparece, mesmo que eu atualize a pagina diversas vezes.

Será que o servidor deve fazer alguma alteração no seu PHP.ini para trabalhar com imagens, uma vez que o script trabalha na geração de uma imagem, a partir de fontes.

Espero que tenham compreendido,

Obrigado,

Ramon

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Como você está fazendo? Está gerando e salvando a imagem ou apenas gerando (ou seja, chamda o arquivo php como se fosse uma imagem), se estiver gerando e salvando lembre-se de dar o chmod na pasta se o servidor for linux.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

Bem, estou utilizando o método de chamar o arquivo php pra gerar a imagem

Faço chamada do arquivo captcha1.php

<?php
session_start();
// Captcha.php
require("captcha.php"); 

session_register("captcha"); 
$captcha_ob = new Captcha(6);
$_SESSION['captcha'] = $captcha_ob->text();
$captcha_ob->show();
?>
Ele cria um objeto captcha, cujo arquivo segue abaixo:
<?php
/**
 * @author Alejandro Fernandez Moraga
 */

class Captcha {

    private $text;
    private $image;

    public function __construct($characters=5) {
        
        $font = 'captcha/Arial_Black.ttf';
        $font2 = 'captcha/Arial.ttf';
        
        $pos_ini = 20;
        $font_len = 35;
        
        $letters = array(
            array('A', 'E', 'I', 'O', 'U'),
            array('B', 'C', 'D', 'F', 'G')
        );
        
        $colors = array(
            array(0, 0, 0),
            array(255, 0, 0),
            array(0, 255, 0),
            array(0, 0, 255)
        );
        $colors_nam = array('pretas', 'vermelhas', 'verdes', 'azuis');
        $colors_len = count($colors);
        
        $this->image = imagecreate($characters * $font_len + $pos_ini * 2, 80);
        imagecolorallocate($this->image, 233, 234, 235);
        
        $avail = array(array() /* letters */, array() /* colors */);
        
        for ($i=0; $i < $characters; $i++) {
            $letter_type = rand(0, 1);
            $letter = $letters[$letter_type][rand(0, count($letters[$letter_type]) - 1)];
            
            if (empty($avail[0][$letter_type]))
                $avail[0][$letter_type] = $letter;
            else
                $avail[0][$letter_type] .= $letter;
        
            $color = rand(0, $colors_len - 1);
            if (empty($avail[1][$color]))
                $avail[1][$color] = $letter;
            else
                $avail[1][$color] .= $letter;
            list($r, $g, $b) = $colors[$color];
            
            imagettftext($this->image, 30, ($i % 2 == 0 ? rand(0, 25) :  - rand(0, 25)),
                $pos_ini + ($font_len * $i), 45,
                    imagecolorallocate($this->image, $r, $g, $b), $font, $letter);
        }
        
        $ask = rand(0, 1);
        $options = array_keys($avail[$ask]);
        $type = $options[rand(0, count($options) - 1)];
        $this->text = $avail[$ask][$type];
        $question = $ask ? $colors_nam[$type] : ($type ? 'consoantes' : 'vogais');
        
        imagettftext($this->image, 10.5, 0, 5, 72, imagecolorallocate($this->image, 0, 0, 0), $font2, "Quais letras são {$question}?");
    }
    
    public function text() {
        return $this->text;
    }
    
    public function show() {
        header('Pragma: no-cache');
        header('Cache-Control: private, no-cache, no-cache="Set-Cookie", proxy-revalidate');
        header('Content-type: image/png');
        imagepng($this->image);
        imagedestroy($this->image);
    }
}

?>
Por fim no formulário está:
<tr>
                <img src="captcha/captcha1.php"/><td><input name="captcha" type="text" class="caixa_mail" id="captcha" size="10"/></td>
                <td><input type="button" onclick="MM_goToURL('parent','fale_vereador.php?num_ver=<?php echo $id; ?>');return document.MM_returnValue" value="Problemas com a imagem?" /></td>
              </tr>

Espero que possam me ajudar.

Obrigado por enquanto

Editado por ramongsilva
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...