2017-01-13 7 views
1

私はdictionary.txtという名前のファイルから単語を取り、GDライブラリを使ってキャプチャ画像にするキャプチャを作成しようとしています。しかし、何かが間違っています。私はセッション変数として表示するために私の辞書のフレーズを得ることができますが、彼らはイメージを作成しません。したがって、GDライブラリコードでなければなりません。 captcha_validate.phpという名前の最終的なターゲットファイルがありますが、それは今は重要ではありません。私はただイメージを動かそうとしているだけです。キャプチャがphpに表示されない

form_captcha.php

<form class="" action="captcha_validate.php" method="post"> 
    Captcha Verify: 
    <input type="text" name="captcha" value="" /><br /><br /> 
    <img src="captcha.php" /><br /> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 

captcha.php

<?php 

    session_start(); 

    session_regenerate_id(); 

    $file = file('dictionary.txt', FILE_IGNORE_NEW_LINES); 

    $length = count($file) - 1; 
    $random = rand(0, $length); 

    $_SESSION['captcha'] = $file[$random]; 
    session_write_close(); 

    function msg($msg) { 
     $container = imagecreate(250, 170); 
     $black = imagecolorallocate($container, 0, 0, 0); 
     $white = imagecolorallocate($container, 255, 255, 255); 
     $font = "C:\Windows\Fonts\arial.ttf"; 
     imagefilledrectangle($container, 0, 0, 250, 170, $black); 

     $px = (imagesx($container)/(strlen($msg)/1.15)); 
     $py = (imagesy($container)/3.5); 

     imagefttext($container, 28, -27, $px, $py, $white, $font, $msg); 
     header("Content-type: image/png"); 
     imagepng($container, null); 
     imagedestroy($container); 
    } 

    msg($file[$random]); 

    ?> 
+0

'Imagepng'のmanページには、qualityとfiltersの引数が使用されていないと' NULLは無効です。 ' –

+0

私はこれを行い、それでも動作していません。 imagepng($ container、null、0、PNG_NO_FILTER); –

答えて

0

フォントパス権が設定されているかどうかをテストしてみてください。私はあなたのスクリプトをテストしました。私の環境に適したフォントパスを設定するとうまくいきました。

のような:

$フォント= './SomeFont.ttf';

+0

なぜそれが私のために働かないのか分からない。 –

+0

さて、私のcaptchaファイルでhtmlを使用していたことが判明しました。その場合は使用しないでください。 –

0

私はcaptcha.phpファイルでhtmlを使用していたので、その場合は使用しないでください。それが私のコードが機能していなかった主な理由でした。試してくれてありがとう、コメントしたり答えた人。

関連する問題