2009-02-26 21 views
0

PHP GDで生成された画像を登録フォームに埋め込むまで、私のウェブサイトのキャプチャクラスを開発しようとしています。私は喜んで、クラスのいくつかの役に立たない部分を表示するために避けGDを使用してフォームに画像を挿入する際に問題が発生しました。

<?php 
//captcha.php 
header("Content-type: image/png"); 


class Captcha { 


    // some attributes bla bla 

    public function __construct($new_string_length,$new_width_picture, 
           $new_height_picture,$new_string_color) { 

    $this->string_length = $new_string_length; 
    $this->width_picture = $new_width_picture; 
    $this->height_picture = $new_height_picture; 
    $this->string_color = $new_string_color; 

    } 

    public function getString() { 
    return $this->string; 
    } 

    public function generateRandomString() { 
    $str = ""; 
    $basket = "abcdefghijklmnopqrstuvwxyz"; 
    $basket_length = strlen($basket); 
    srand ((double) microtime() * 1000000); 
    for($i=0;$i<$this->string_length;$i++) { 

     $generated_pos = rand(0,$basket_length); 
     $str_substr = substr($basket,$generated_pos-1,1); 
     if(!is_numeric($str_substr)) { 
      // if the character picked up isn't numeric 
      if(rand(0,1)==1) { 
      // we randomly upper the character 
      $str_substr = strtoupper($str_substr); 
      } 
     } 
     $str = $str.$str_substr; 
    } 

    $this->string = $str; 
    } 

    **public function generatePictureFromString($new_string) { 
     $root_fonts = '../fonts/'; 
     srand ((double) microtime() * 1000000); 
     $list_fonts = array('ABODE.ttf','acme.ttf','Alcohole.ttf', 
        'Anarchistica.ttf','AMERIKAA.ttf'); 

     $image = @imagecreatetruecolor($this->width_picture,$this->height_picture); 
     $noir = imagecolorallocate($image,0,0,0); 
     $clr = explode('/',$this->string_color); 
     $clr = imagecolorallocate($image,$clr[0],$clr[1],$clr[2]); 




     for($i=0;$i<strlen($new_string);$i++) {  
      imagettftext($image,rand(($this->height_picture/4.3),($this->height_picture)/4.2), 
      rand(-45,45),($this->width_picture)/(5*$this->string_length)+($this->width_picture)/($this->string_length)*$i,0.6*($this->height_picture),$clr, 
      $root_fonts.$list_fonts[rand(0,count($list_fonts)-1)],substr($new_string,$i,1)); 
     } 

     imagepng($image); 
     imagedestroy($image); 

    }** 

} 

:ここ

は私のクラスのコードです。

<?php 
//testeur_classe.php 
require_once '../classes/captcha.php'; 

$captcha = new Captcha(5,200,80,"255/255/255"); 
$captcha->generateRandomString(); 
$str = $captcha->getString(); 
$captcha->generatePictureFromString($str); 
?> 

しかし、私が使用して自分の形で生成された画像を挿入しようとすると::

<img src="<?php echo PATH_ROOT.'classes\testeur_classe.php'; ?>"/> 

何も表示されませんが、私はこのようなgeneratePictureFromString(..)メソッドを呼び出すときに、クラス自体は完璧に動作します!

どうすればいいですか?

ありがとうございました!

+0

teseur_classe.phpは正しくロードされますか? –

答えて

1

イメージsrcがスクリプトの有効なURLであることを確認する必要があります。そこのバックスラッシュを見ると、それは実際にはファイルシステムのパスであると思われます。

+0

はい、ファイルシステムのパスです。localhostでテストを実行しています。パスは有効です。 –

+0

ブラウザにソースを表示すると、画像srcには何が入っていますか? –

+0

2

OK:ブラウザで\ testeur_classe.phpクラスを開いた場合、どうなるでしょうか? (P.S.ライアン・グラハムと同じ質問は質問のコメントであなたを尋ねた)

OK:

header('Content-type: image/png'); 

P.S.:は、私はあなたのような画像出力前に、正しいヘッダを設定しなければならないと思います

このコードは機能し、私のマシンで試しました。 < img src = "..."または<ベースhref = ""にバグがある必要があります。あなたは私たちにあなたのhtml出力を見せることができるので、何が問題であるかを見ることができますか?

+0

クラス\ testeur_classe.phpを開いた場合、完全なキャプチャ画像が表示されます:) –

+0

アップ、コードの上にヘッダー( '')が表示されませんでした。私たちはあなたの出力htmlを見ることができますか?これはバグです

Vérification :

+0

あなたはこのことを意味します!以前のコメントで述べたように、htmlデザインではシステムパスを使用できません。 C:¥Program Files¥EasyPHP 2.0b1¥www¥polydotnetを指すドメインを持っている場合は、src = "classes/testeur_classe.php"とそれ以外は使用しないでください。 –

関連する問題