Captcha Script erzeugt fehlerhaftes Bild

  • Hallo,
    ich habe gerade "mal wieder" ein vermutlich kleines Problem mit meinem Captcha Script. Um folgendes Script geht es:

    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 :)

    Don't follow me, I run into walls.

  • 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.

  • 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.

  • Wenn ich lese

    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.

  • Meinen Tests zufolge muss irgendwas in der For-Schleife nicht stimmen.


    Diese Aussage ist falsch!!!

    Lässt man

    PHP
    require_once('core/classes/system.class.php');
    system::start(false);


    und

    PHP
    $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"