kostenloser Webspace werbefrei: lima-city


PHP Grafik mit Get-Variable

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    Ein PHP-Script soll eine Grafik mit Text ausgeben. Der Text wird mit Hilfe einer GET-Variablen übergeben. Wenn kein Text übergeben wird soll ein Standardtext verwendet werden. Mein Code sieht so aus
    <?php
    header("Content-Type: image/png");
    if ($_GET['text'] == '')
    	{ 
    	$string='Dummytext';
    	}
    else {
    	$string = $_GET['text'];
    	}
    
    $img = imagecreatetruecolor(400, 100);
    
    $white = imagecolorallocate($img, 255, 255, 255);
    imagestring($img, 5, 50, 50, $string, $white);
    
    imagepng($img);
    imagedestroy($im);
    ?>


    Wenn ich die Datei mit button.php?text=ein+ganz+langer+text aufrufe, ist alles in Ordnung, aber ohne Parameter wird nicht etwa ein Bild mit Dummytext sondern der Browser sagt
    Die Grafik...kann nicht angezeigt werden, weil sie Fehler enthält


    Es scheint also irgendetwas mit der Abfrage der GET-Variablen nicht zu funktionieren. Hat jemand eine Idee, was die Ursache ist?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du hast vergessen auf Existenz der Variablen zu prüfen, z.B. wie hier:
    if (isset($_GET['text'])) {
        echo "Die GET-Variable 'text' wurde gefunden und hat den Wert ".$_GET['text'];
    } else {
        echo "Es wurde keine GET-Variable 'text' angegeben.";
    }

    Das Fragment
    header("Content-Type: image/png");
    sollte direkt vor der eigentlichen Ausgabe
    imagepng($img);
    stehen, dann sind eventuelle Fehlermeldungen im Klartext sichtbar.
    In deinem Beispiel wird die Fehlermeldung bei Zugriff auf die nicht existierende Variable
    $_GET['text']
    als (korrupte) Grafik ausgegeben.

    Zusätzlich sollte während des debuggens
    error_reporting(E_ALL);
    eingeschaltet sein.

    Beitrag zuletzt geändert: 25.10.2013 23:09:16 von suge
  4. Autor dieses Themas

    mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    Vielen Dank für die Hilfe. Die Abfrage der Variablen-Existenz brachte die Lösung.

    Ansonsten musste ich aber feststellen, dass

    error_reporting(E_ALL);


    und

    Die Verschiebung von

    header("Content-Type: image/png");


    direkt vor

    imagepng($img);


    im konkreten Fall keine zusätzlichen Fehlerinformationen bringen. Aber das Grundproblem ist zunächst mal gelöst.
  5. Mit
    error_reporting(E_ALL);
    wird (ab PHP 5.4/lima-city ) das volle Programm an Meldungen aktiviert. Abhängig von deinen Voreinstellungen kann, aber muß nicht, mehr Information als zuvor generiert werden.

    Die Auswirkung der falsch plazierten header-Funktion hast du eh im start-posting beschrieben: Eine irreführende Fehlermeldung.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!