dedlfix: Selbstgebasteltes Skript zum Verkleinern von Grafiken erzeugt keine Thumbnails

Beitrag lesen

Tach!

   $Grafik = "../IMG/FotoEnricoGross.png";
   echo '<img src="INC/Verkleinern.php?G=' . $Grafik . '&B=100">';

Es ist sehr ungüstig, wenn du solche relativen Pfade zulässt und nicht seitens deines Scripts den Anwender nur in ein vorher festgelegtes Verzeichnis einsperrst.

if (empty ($_GET))
return 'Die Servervariable "GET" ist leer';

Diese Meldung kann kein Anwender verstehen.

if (!isset ($_GET["A"]))
return "Du hast keine Datei angegeben";

Diese schon eher.

$Ausgangsgrafik = $_GET["A"];

if (!file_exists ($Ausgangsgrafik))
return 'Die Datei "' . $Ausgangsgrafik . '" wurde nicht gefunden';

Bei dieser Meldung kann der Anwender nichts weiter tun. Oder doch? Sag ihm seine Alternativen.

if (isset ($_GET["B"]))
$Maximale_Breite = $_GET["B"];

if (!((int)$Maximale_Breite === $Maximale_Breite))
return 'Die Angabe "' . $Maximale_Breite . '" für die neue Breite ist keine Zahl';

$_GET liefert immer Strings (hier nicht zutreffende Ausnahme: Arrays mit Strings). $Maximale_Breite ist also ein String. Ein Integer ist nie typgleich zu einem String. Diese Bedingung wird (aufgrund der Negation) immer true ergeben.

Die Funktion "Bytes_einlesen" soll lediglich die Rohdaten der Ausgangsgrafik einlesen, so dass die Grafik nicht zuerst vollständig geladen werden muss, um deren Höhe und Breite zu ermitteln.

Höhe und Breite liefert auch getimagesize().

Ich dachte zunächst an einen Fehler bzgl. der Pfadangabe der Ausgangsgrafik. Sie existiert, relativ zur aufrufenden Datei. Für den Fall, dass die verkleinernde PHP-Datei vom Ordner "INC" ausgehend auf die Grafik zugreifen sollte, habe ich einen weiteren Verzeichnungssprung zurück festgelegt ("../IMG/FotoEnricoGross.png"), aber mit dem selben Resultat, dass mir im Browser nur ein Symbol angezeigt wird, das wohl fehlerhaft geladene Grafiken symbolisieren soll.

Ich weiß ja nicht, was du mit den Return-Werten der Fehlermeldungen anstellst ... aber lass mal das header ("Content-type: IMAGETYPE_PNG"); weg und ruf das Script inklusive Parameter direkt auf. Schau auch in die Quelltextansicht des Browsers.

Kann man Code jetzt gar nicht mehr farblich hervorheben lassen, so wie es im "alten" Forum war?

Sieht doch alles gut aus, oder hat das ein Forumsgeist korrigiert?

dedlfix.