PHP Grafik mit Get-Variable
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
auswirkung
code
falsch plazierten header
fehlermeldung
feststelle
grafik
grundproblem
header
hilfe
image
korrupte grafik
parameter
string
text
type
ursache
variable text
variablen existenz
verschiebung
-
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?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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
sollte direkt vor der eigentlichen Ausgabeheader("Content-Type: image/png");
stehen, dann sind eventuelle Fehlermeldungen im Klartext sichtbar.imagepng($img);
In deinem Beispiel wird die Fehlermeldung bei Zugriff auf die nicht existierende Variable
als (korrupte) Grafik ausgegeben.$_GET['text']
Zusätzlich sollte während des debuggens
eingeschaltet sein.error_reporting(E_ALL);
Beitrag zuletzt geändert: 25.10.2013 23:09:16 von suge -
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. -
Mit
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.error_reporting(E_ALL);
Die Auswirkung der falsch plazierten header-Funktion hast du eh im start-posting beschrieben: Eine irreführende Fehlermeldung. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage