Captcha-Tutorial - Buchstabenproblem

djnelly

Erfahrenes Mitglied
Hallo

ich beziehe mich auf das Tutorial: PHP einfacher Captcha mit GD2 und FreeType

Ich habe dieses Tutorial umgesetzt und finde es toll. Auf meinen lokalen PC klappt das Script super, nur auf dem Webserer nicht.

Ich folgenden mal die Werte aus phpinfo():

GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with TTF library
FreeType Version 1.4
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled


Ich habe das Problem, dass das Image zwar angezeigt wird, aber nur der Hintergrund ohne Schriften. Kann es sein, dass das System keine ttf. öffnen darf?

Hier ein Beispiel:

http://www.immobilien-popp.de/pages/kontakt_captcha.php

Weiß jemand Rat?
 
PHP:
<?
session_start();

    $CAPTCHA_LENGTH = 5;    // Länge der Captcha-Zeichenfolge, hier fünf Zeichen 
    $FONT_SIZE      = 20;   // 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[] = '../files/ttf/font3'; 

    // 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 

include("../admin/config.php");
$verbindung = mysql_connect($db_server,$db_user,$db_pass);
mysql_select_db($db_db);

$session_id = session_id();
$sqlk_captcha = "select * from popp_captcha where captcha_phpsessid = '$session_id'";
$sqla_captcha = mysql_query($sqlk_captcha) or die ("Error: " .mysql_error());
$az_sz = mysql_num_rows($sqla_captcha);
  		$captcha_time = time();
   		if($az_sz > 0) { 
 		$sqla_captcha1 = "update popp_captcha set captcha_time='$captcha_time',captcha_captcha='$captcha' where captcha_phpsessid='$session_id'";
		} else {
 		$sqla_captcha1 = "insert into popp_captcha (captcha_time,captcha_captcha,captcha_phpsessid) values ('$captcha_time','$captcha','$session_id')";
		}
		mysql_query($sqla_captcha1) or die ("Error: " .mysql_error());
 
    $sql = 'DELETE FROM 
                `popp_captcha` 
            WHERE 
                `captcha_time` <= '.(time() - 300); 

    mysql_query($sql, $verbindung); 
?>
 
Warning: imagettfbbox() [function.imagettfbbox]: Could not find/open font in /var/www/web18/html/pages/kontakt_captcha.php on line 54

hast du die schrift datei auch am richtigen ort abgelegt? hat dein skript die berechtigund die schrift zu verwenden, sprich öffnen?
 
Schau bitte jetzt nochmal... hatte heute früh was vesucht und da gab es diesen fehler.. jetzt ist das script wieder wie vorher.

Den Ordner der Fonts habe ich auf CHMOD 777 gesetzt, sowie auch die font.

Das script ist das wie oben geschrieben...
 
Hallo...

der Fehler in der SQL Abfrage liegt daran, dass der Pfad nicht stimmt, da wir das Script direkt aufrufen.

Ich hab die SQL Abfrage eben mal abgeschalten und es geht trotzdem nicht.. Also ich denke es muss was an der Serverconfig sein.

Hier mal ein Auszug aus der phpinfo()

Code:
Configure Command  './configure' '--prefix=/usr' '--with-gd' '--with-ttf' '--with-imap' '--with-iconv' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-mcrypt=/usr' '--with-zlib' '--with-mysql' '--with-gettext' '--with-config-file-path=/etc/httpd' '--with-ldap-dir=/usr' '--with-xml' '--with-xmlrpc' '--enable-filepro' '--enable-ftp' '--enable-dba' '--enable-ctype' '--enable-wddx' '--enable-exif' '--enable-bcmath' '--enable-track-vars' '--enable-sockets' '--enable-trans-sid' '--enable-dbase' '--no-recursion' '--with-apxs'  


gd
GD Support  enabled  
GD Version  bundled (2.0.28 compatible)  
FreeType Support  enabled  
FreeType Linkage  with TTF library  
FreeType Version  1.4  
GIF Read Support  enabled  
GIF Create Support  enabled  
JPG Support  enabled  
PNG Support  enabled  
WBMP Support  enabled  
XBM Support  enabled
 
Zurück