2017-03-20 18 views
1

私はキャプチャをコーディングしたいが何らかの理由で自分の画像が表示されない(単にimgのエラーシンボルが表示される) 私のミスがどこにあるか教えてくれる? 他の皆さんは、キャプチャcaptchaの画像がブラウザに表示されない

<?php 
session_start(); 

function generateCaptcha($_SESSIONNAME) { 

    // Überprüfen ob der Sessionname leer ist 
    if(trim($_SESSIONNAME) == '') 
     die('Sessionname ist leer!'); 

    //schrift fuer captcha 
    $font = './captcha.ttf'; 

    //bild erstellen auf den der captcha erscheint 
    $image = imagecreate(125, 30); 
    //weiß faerben des bildes 
    imagecolorallocate($image, 255, 255, 255); 

    //links 5 px Initialwert 
    $left = 5; 
    //alle zulaessigen Buchstaben (aehnliche rausgenommen) 
    $allowed = 'aAbBcCdDeEfFgGhHijJkKLmMnNpPqrRsStTuUvVwWxXyYzZ1234578'; 

    //string fuer zufall code 
    $string = ''; 

    for($i = 1;$i <= 6;$i++) // 6 Zeichen 
    { 
     //random nummer mit str laenge -1 
     $code = $allowed{rand(0, strlen($allowed) - 1)}; 

     //das 
     $string .= $code; // Das Zeichen an den gesamten Code anhängen 
     imagettftext($image, 20, rand(-10, 10), $left + (($i == 1?5:15) * $i), 25, imagecolorallocate($image, 200, 200, 200), $font, $code); 
     // Das gerade herausgesuchte Zeichen dem Bild hinzufügen 
     imagettftext($image, 16, rand(-15, 15), $left + (($i == 1?5:15) * $i), 25, imagecolorallocate($image, 69, 103, 137), $font, $code); 
     // Das Zeichen noch einmal hinzufügen, damit es für einen Bot nicht zu leicht lesbar ist 
    } 

    $_SESSION[$_SESSIONNAME] = $string; // Den Code in die Session mit dem Sessionname speichern für die Überprüfung 

    header("Content-type: image/png"); // Header für ein PNG Bild setzen 
    imagepng($image); // Ausgaben des Bildes 
    imagedestroy($image); // Bild zerstören 

} 

$sessionName = 'captchacode'; // Sessionname 

if(isset($_GET['captcha'])) 
{ 
    //aufruf der funltion(parameter = sessionname) 
    generateCaptcha($sessionName); 
    //beenden 
    exit(); 
} 

//pruefen ob form gesendet wurde 
if(isset($_POST['check'])) 
{ 
    // Vergleich eingabe und code 
    if($_SESSION[$sessionName] == trim($_POST['captcha'])) 
     echo "Richtig"; 
    else 
     echo "Falsch"; 
} 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <fieldset> 
     <label for="captcha"> 
      Captcha 
     </label> 
     <input type="text" name="captcha" id="captcha" /> 
     <img src="<?php echo $_SERVER['PHP_SELF']; ?>?captcha" alt="" /> 
     <button type="submit" name="check">Überprüfen</button> 
    </fieldset> 
</form> 

答えて

0

あなただけに行くとき、あなたは何を得るかを使用しようとするその私の最初の時間も..私はちょうどカントは私のミスを参照してください彼らは彼らのために、ほぼ同じコードとその作業罰金を使用して私に言いましたimageurl?おそらくエラーが表示されます(このコードを実行しようとすると、環境にGDのPHP拡張機能がない可能性があります)。 画像URLを$_SERVER['PHP_SELF'] . '?captcha=1'

+0

ur right img urlについてこのエラーを示していますimg ...画像からURLを変更しようとしましたが、それでも同じ誤りです – Smuka

+0

あなたのPHPにGDライブラリがインストールされていますか? –

+0

GDエクステンションを持っていて、式を使用していれば、コードにエラーはありませんか? – Smuka

-1

に変更することもできます。$font = './captcha.ttf';は適切な場所にありますか?エラーを解決するには

+0

私はそれが理にかなっていると思った。どこに置くの? – Smuka

+0

なぜ答えのセクションに明快さを求めていますか?コメントするのに十分な担当者がいる –

+0

@MasivuyeCokileありがとう、私はまだ学んでいる –

0

  • ので、ブラウザがイメージとしてそれを強制してから、ビュー・ソースを防ぐことはできません一時的にheader("Content-type: image/png");をコメントアウトsession_start();
  • 上記のスクリプトの先頭にerror_reporting(E_ALL); ini_set('display_errors', 'On');を追加
  • script.php?captcha = 1に直接移動し、表示されるエラーメッセージを確認してください。

ほとんどの場合、GDまたはFreeTypeが不足しているか、セッション設定がサーバー上でボークされている可能性があります。

関連する問題