Captcha wird nicht angezeigt

Alexander1307

Grünschnabel
Hallo zusammen,
ich entwickle gerade ein Kontaktformular, da in einem sicherem Kontaktformular ein Captcha nicht fehlen darf, habe ich mir aus dem ersten Teil des Tutorials "einfacher Captcha mit GD2 und FreeType" von Billie den Code rauskopiert um den Code bei mir einzubauen. Leider klapts irgendwie nicht. Habe denn Code in der Datei "captcha.php" gespeichert. Wenn ich jetzt die Datei "captcha.php" auf den Webserver ausführe bekomme ich nur den Pfad wo die Datei "captcha.php" liegt, zu sehen.

Hier der Code von der Datei captcha.php :
PHP:
<?php
   
    $CAPTCHA_LENGTH = 5;    // Länge der Captcha-Zeichenfolge, hier fünf Zeichen
    $FONT_SIZE      = 18;   // Schriftgröße der Zeichen in Punkt
    $IMG_WIDTH      = 170;  // Breite des Bild-Captchas in Pixel
    $IMG_HEIGHT     = 60;   // Höhe des Bild-Captchas in Pixel

    // Liste aller verwendeten Fonts
    $FONTS[] = './ttf/actionj.\ttf';
    $FONTS[] = './ttf/apicture.\ttf';
    $FONTS[] = './ttf/assimila.\ttf';

    // Unser Zeichenalphabet
    $ALPHABET = array('A', 'B', 'C', 'D', 'E', 'F', 'G',
                      'H', 'Q', 'J', 'K', 'L', 'M', 'N',
                      'P', 'R', 'S', 'T', 'U', 'V', 'Y',
                      'W', '2', '3', '4', '5', '6', '7');

    // Wir teilen dem Browser mit, dass er es hier mit einem JPEG-Bild zu tun hat.
    header('Content-Type: image/jpeg', true);

    // Wir erzeugen ein leeres JPEG-Bild von der Breite IMG_WIDTH und Höhe IMG_HEIGHT
    $img = imagecreatetruecolor($IMG_WIDTH, $IMG_HEIGHT);

    // Wir definieren eine Farbe mit Zufallszahlen
    // Die Farbwerte sind durchgehend und absichtlich hoch (200 - 256) gewählt,
    // um eine "leichte" Farbe zu erhalten
    $col = imagecolorallocate($img, rand(200, 255), rand(200, 255), rand(200, 255));

    // Wir füllen das komplette Bild mit der zuvor definierten Farbe
    imagefill($img, 0, 0, $col);

    $captcha = ''; // Enthält später den Captcha-Code als String
    $x = 10; // x-Koordinate des ersten Zeichens, 10 px vom linken Rand
    
    
    for($i = 0; $i < $CAPTCHA_LENGTH; $i++) {

        $chr = $ALPHABET[rand(0, count($ALPHABET) - 1)]; // ein zufälliges Zeichen aus dem definierten Alphabet ermitteln
        $captcha .= $chr; // Der Zeichenfolge $captcha das ermittelte Zeichen anfügen

        $col = imagecolorallocate($img, rand(0, 199), rand(0, 199), rand(0, 199)); // einen zufälligen Farbwert definieren
        $font = $FONTS[rand(0, count($FONTS) - 1)]; // einen zufälligen Font aus der Fontliste FONTS auswählen

        $y = 25 + rand(0, 20); // die y-Koordinate mit einem Mindestabstand plus einem zufälligen Wert festlegen
        $angle = rand(0, 30); // ein zufälliger Winkel zwischen 0 und 30 Grad

        /*
         * Diese Funktion zeichnet die Zeichenkette mit den
         * gegeben Parametern (Schriftgröße, Winkel, Farbe, TTF-Font, usw.)
         * in das Bild.
         */
        imagettftext($img, $FONT_SIZE, $angle, $x, $y, $col, $font, $chr);

        $dim = imagettfbbox($FONT_SIZE, $angle, $font, $chr); // ermittelt den Platzverbrauch des Zeichens
        $x += $dim[4] + abs($dim[6]) + 10; // Versucht aus den zuvor ermittelten Werten einen geeigneten Zeichenabstand zu ermitteln
    }
    
    imagejpeg($img); // Ausgabe des Bildes an den Browser
    imagedestroy($img); // Freigeben von Speicher
?>

wie gesagt habe den Code aus dem Tutorial 1 zu 1 übernommen nur die Pfade zu den Fonts habe ich verändert. Kann mir dabei jemand Helfen? Danke im vorraus.
 
Hallo Alexander,

sind die Schriften die du in dem Script benutzt, auf deinem System installiert?

Falls nein.. dann ist es klar, dass nichts ausgegeben wird.


mfg


SchnoOps
 
Hallo 5noOPY!

Danke für deine schnelle Antwort. Habe das Problem gelöst. Wie du gesagt hast es lag den Fonts. Da ich erst seit kurzem auf Ubuntu arbeite weis ich nicht wie man Fonts installiert. Aber ich hatte Glück der Font "actionjf" funktioniert auf dem localen System. Da habe ich beschlossen das Captcha nur mit einer Schriftart zu machen.

Vielen Dank nochmal!;-)

Grüße
Alex
 
Zurück