Ergebnis 1 bis 5 von 5

Thema: Captcha Script erzeugt fehlerhaftes Bild

  1. #1
    Großmeister(in) Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard Captcha Script erzeugt fehlerhaftes Bild

    Hallo,
    ich habe gerade "mal wieder" ein vermutlich kleines Problem mit meinem Captcha Script. Um folgendes Script geht es:
    PHP-Code:
    <?php
    require_once('core/classes/system.class.php');
    system::start(false);

    $CAPTCHA_LENGTH 5;    // Länge der Captcha-Zeichenfolge, hier fünf Zeichen
    $FONT_SIZE      11;   // Schriftgröße der Zeichen in Punkt
    $IMG_WIDTH      278;  // Breite des Bild-Captchas in Pixel
    $IMG_HEIGHT     38;   // Höhe des Bild-Captchas in Pixel

    // Liste aller verwendeten Fonts
    $FONTS[] = 'fonts/actionj.ttf';
    $FONTS[] = 'fonts/minya.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',
                      
    'X''Z''9''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 15// x-Koordinate des ersten Zeichens, 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(010); // die y-Koordinate mit einem Mindestabstand plus einem zufälligen Wert festlegen
        
    if((bool)rand(0,1)){
            
    $angle rand(030); // ein zufälliger Winkel zwischen 0 und 30 Grad
        
    }else{
            
    $angle rand(330360); // ein zufälliger Winkel zwischen 330 und 360 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]) + 15// Versucht aus den zuvor ermittelten Werten einen geeigneten Zeichenabstand zu ermitteln
    }

    imagejpeg($img); // Ausgabe des Bildes an den Browser
    imagedestroy($img); // Freigeben von Speicher

    $result system::$db->select("*","captcha","captcha_phpsessid = '".$_GET['PHPSESSID']."'","","1");
    if(
    system::$db->getTableRows($result) > 0) {
        
    system::$db->update("captcha","captcha_time = '".time()."', captcha_captcha = '".$captcha."'","captcha_phpsessid = '".$_GET['PHPSESSID']."'");
    } else {
        
    system::$db->insert("captcha","captcha_phpsessid, captcha_time, captcha_captcha","'".$_GET['PHPSESSID']."','".time()."','".$captcha."'");
    }
    system::$db->delete("captcha","captcha_time <= '".(time() - 900)."'");
    ?>
    Dieses Script hab ich schon oft verwendet um das Bild des Captchas zu generieren. Fast jedes mal gab es irgendwelche Probleme. Diesmal gibt es wieder einen^^ Ich bin jetzt schon eine geschlagene Stunde am probieren aber ich überseh den Fehler. Das Einzige was ich an dem Script geändert habe ist die Objektorientierte Datenbankverbindung. (Diese funktioniert auch)
    Meinen Tests zufolge muss irgendwas in der For-Schleife nicht stimmen. Wenn ich das Bild vorher ausgebe funktioniert es (ich bekomme dann halt nur den Hintergrund angezigt^^)

    Ich würde mich freuen, wenn ihr mir helfen könntet oder wenigstens Denkanstöße
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Don't follow me, I run into walls.

  2. #2
    Unregistriert
    Gast

    Standard AW: Captcha Script erzeugt fehlerhaftes Bild

    Zitat Zitat von Santos Beitrag anzeigen
    wenigstens Denkanstöße
    Aber gerne doch:

    Richtig debuggen

    Man bemerkt, dass ein Skript nicht das tut, was es soll.
    Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  3. #3
    Großmeister(in)
    Themenstarter
    Avatar von MyXoToD
    Registriert seit
    07.11.2007
    Ort
    Mainz
    Alter
    24
    Beiträge
    507
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: Captcha Script erzeugt fehlerhaftes Bild

    Vielen Dank dafür aber nach 1 Stundd testen habe ich das schon mehr als genug versucht Ich versuche es einfach selbst weiter.
    Don't follow me, I run into walls.

  4. #4
    Unregistriert
    Gast

    Standard AW: Captcha Script erzeugt fehlerhaftes Bild

    Wenn ich lese
    Zitat Zitat von Santos Beitrag anzeigen
    Meinen Tests zufolge muss irgendwas in der For-Schleife nicht stimmen.
    dann steht für mich fest, dass nicht richtig debuggt wurde. Denn "irgendwas" ist keine Problembeschreibung. Und ganz nebenbei, was ist schon 1 Stunde? Wenn du mal einen richtigen Bock in der Software hast, dann kann man auch schon mal länger suchen.

  5. #5
    Unregistriert
    Gast

    Standard AW: Captcha Script erzeugt fehlerhaftes Bild

    Zitat Zitat von Santos Beitrag anzeigen
    Meinen Tests zufolge muss irgendwas in der For-Schleife nicht stimmen.
    Diese Aussage ist falsch!!!

    Lässt man
    PHP-Code:
    require_once('core/classes/system.class.php');
    system::start(false); 
    und
    PHP-Code:
    $result system::$db->select("*","captcha","captcha_phpsessid = '".$_GET['PHPSESSID']."'","","1");
    if(
    system::$db->getTableRows($result) > 0) {
        
    system::$db->update("captcha","captcha_time = '".time()."', captcha_captcha = '".$captcha."'","captcha_phpsessid = '".$_GET['PHPSESSID']."'");
    } else {
        
    system::$db->insert("captcha","captcha_phpsessid, captcha_time, captcha_captcha","'".$_GET['PHPSESSID']."','".time()."','".$captcha."'");
    }
    system::$db->delete("captcha","captcha_time <= '".(time() - 900)."'"); 
    weg, funktioniert das Script. Soviel zum Thema "Richtig debuggen"

Ähnliche Themen

  1. fehlerhaftes php script???
    Von leopold_dexter im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 8
    Letzter Beitrag: 28.09.2009, 23:03
  2. Captcha Bild (x-y Koordinaten)
    Von Darkxor im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 10.02.2009, 08:35
  3. SCRIPT FÜR TEXT AUF BILD
    Von dres im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 27.03.2007, 14:11
  4. Probleme mit Captcha Script
    Von DiamondDog im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 08.02.2007, 21:09
  5. Bild im bild script (lol)
    Von robert2606 (gast) im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 04.05.2006, 11:36

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •