tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
312
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    walle_89 walle_89 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    70
    Hallo liebe PHP-Gemeinde!

    Ich habe ein wieder mal ein ganz banales Problem, was ich nicht so schnell lösen kann - leider.
    Es geht um das folgende Tutorial.
    Ich habe das dann auch meinem Server hochgeladen, doch es will nicht funktionieren. Ich habe NICHT die GD-Lib vergessen, wie man anhand von phpInfo sehen kann. Ich kann mir aber nicht vorstellen, woran es noch liegen könnte.
    Ich habe dennoch eine Zeile verändert
    // Liste aller verwendeten Fonts
    $FONTS[] = 'XFILESf';

    Danke schonmal im Voraus, walle_89
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Kannst du mal die Datei als Source zur Verfügung stellen? Also z.b. in captcha.phps umbenennen, so das man evtl. die Möglichkeit der Fehler-Analyse hat?

    Grüße
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    walle_89 walle_89 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    70
    Wie ich schon sagte, habe ich nur eine Zeile verändert.

    captcha.php
    PHP-Code:
    <?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[] = 'XFILESf';

        
    // 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($imgrand(200255), rand(200255), rand(200255));

        
    // Wir füllen das komplette Bild mit der zuvor definierten Farbe
        
    imagefill($img00$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(0count($ALPHABET) - 1)]; // ein zufälliges Zeichen aus dem definierten Alphabet ermitteln
            
    $captcha .= $chr// Der Zeichenfolge $captcha das ermittelte Zeichen anfügen

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

            
    $y 25 rand(020); // die y-Koordinate mit einem Mindestabstand plus einem zufälligen Wert festlegen
            
    $angle rand(030); // 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
    ?>
     

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Also bei mir funktioniert das alles, wenn ich eine Schriftart in den Script-Ordner kopiere und als Eintrag folgendes mache:

    PHP-Code:
    $FONTS[] = 'Achafontf'
    Wie ich sehe, fehlt bei dir die Datei-Endung. Entwickelst du unter Windows und hast vergessen, das in der Standard-Einstellung die Datei-Endung ausgeblendet wird? Wenn ja, dann schreib einfach mal ein f hinter den Dateinamen im Script.

    Grüße

    EDIT: Warum schneidet die Forum-Software etwas aus meinem Posting? Gemeint war die Dateiendung "t t f". Irgendwas seltsames geht hier vor.
    Geändert von saftmeister (08.03.09 um 20:03 Uhr)
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #5
    walle_89 walle_89 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    70
    Bei mir hatte die Forensoftware auch etwas abgeschnitten. Meine Fonts definierte ich folgendermaßen:

    $FONTS[] = 'XFILES. t t f '; (ohne den Leerzeichen)

    Also eigentlich richtig so, oder? Oder kann mir einer mal sagen, wie ich debuggen soll? Eine andere Schriftart?

    (Das Script läuft unter Linux)
     

  6. #6
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Pfadangabe und Dateiname passen auch von der Groß-/Kleinschreibung her? Linux-Dateisysteme legen einen Wert auf die korrekte Schreibweise. Hast du die Fonts evtl. auch in einem Unterordner abgelegt? Du kannst auch mal versuchen, den absoluten Pfad zur Datei anzugeben. Da die Forumsoftware das wegschneidet, kann leider nicht genau sagen, was hier falsch läuft. Bei mir funktioniert das Script jedenfalls, ich habe die Schrift-Datei in genau dem gleichen Verzeichnis wie das Script und verwende Windows. Daher ist die Groß-/Kleinschreibung bei mir egal.

    EDIT: Achso. Linux: Passen die Zugriffsrechte? Darf dein Webserver (idR. Benutzer httpd, apache oder www) die Schriftdatei lesen?
    Geändert von saftmeister (08.03.09 um 20:16 Uhr)
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  7. #7
    walle_89 walle_89 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    70
    Ich habe die Dateiendungen geprüft und auch sonstige Sachen (Pfad, etc.) getestet. Deine Vermutung wegen des Webservers könnte womöglich zutreffen ... Wie soll ich dem Apache sagen, dass er die Schriftdatei lesen darf?
     

  8. #8
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Du kannst die Datei-Attribute mittels eines geeigneten FTP-Client oder lokal im Dateisystem mittels des Kommandos ls -l prüfen. Notfalls änderst du die Attribute mittels chmod so ab, das alle User die Datei zumindest mal lesen können:

    chmod 0444 [pfad_zur_schriftdatei]

    Oder dein FTP-Client kann das. Wenn du nicht weißt, ob und wie man das mit deinem FTP-Client machen kann, schreib mal, was du verwendest. Mit Filezilla geht das über das Kontext-Menü auf der entsprechenden Datei. Gebe am besten Allen (Eigentümer, Gruppe und Sonstige) Leserechte.

    Grüße
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  9. #9
    walle_89 walle_89 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    70
    Die Datei war schon auf CHMOD 0644 - also hätte eigentlich funktionieren sollen. Bin echt am verzweifeln .....
     

  10. #10
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Dann kann ich nur noch vermuten, das die Schrift-Datei kaputt ist. Versuch mal eine andere. Mehr Ideen habe ich leider auch nicht.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  11. #11
    walle_89 walle_89 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    70
    Auf meinem Rechner funktioniert das Ganze einwandfrei => XAMPP + Win Pro SP3. Also wird es wohl am Server liegen, und zwar an den Schriftdateien (Pfad, oder Rechte, oder sonstwas). Na ja, ich hoffe ich werde den Fehler finden
     

Ähnliche Themen

  1. Captcha problem
    Von BigR16 im Forum PHP
    Antworten: 11
    Letzter Beitrag: 14.01.09, 09:58
  2. Captcha - Problem
    Von ava99 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 17.04.08, 15:48
  3. Captcha Problem
    Von Geordi im Forum PHP
    Antworten: 1
    Letzter Beitrag: 27.12.07, 21:42
  4. CAPTCHA Problem
    Von Nepheus im Forum PHP
    Antworten: 7
    Letzter Beitrag: 31.03.07, 15:29
  5. Captcha Problem
    Von d2mike im Forum PHP
    Antworten: 2
    Letzter Beitrag: 09.01.07, 12:12