Auge: Geänderter Code zu "Selbstgebasteltes Skript zum Verkleinern von Grafiken erzeugt keine Thumbnails"

Beitrag lesen

Hallo

Du hast den Code ja ordentlich ausgemistet. Allerdings bist du dabei meiner Meinung nach etwas zu weit gegangen und zudem grundsätzlich falsch abgebogen.

##Fangen wir mit dem Abbiegen an.

Du lässt bei jedem Aufruf einer Seite, in der das Skript eingebunden ist, ein oder mehrere Thumbnail(s) erstellen. Werden die Seiten oft aufgerufen, ist das ineffektiv. Sollten die Bilder aus Uploads stammen, sollte die Thumbnailerstellung einmalig gleich nach dem Upload erfolgen. Das kann dein Skript erledigen. Werden die Bilder von dir oder einem Beauftragten per FTP hochgeladen, sollte die Thumbnailerstellung zum vorbereitenden Arbeitsablauf der Bilderstellung gehören.

##Jetzt zum „zu weit“.

Du hast sämtliche Prüfungen, die zu Fehlerausgaben führen könnten, entfernt. Das sind praktisch alle. Dabei hast du aber verdrängt, dass genau dies ebenso zu Fehlern führen kann.

Beispiel 1 (alt):

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

   $Ausgangsgrafik = $_GET["A"];

Beispiel 1 (neu):

   $Ausgangsgrafik = $_GET["A"];

Falls $_GET["A"] nicht existiert, ist, je nach eingestelltem PHP-Meldungslevel, entweder $Ausgangsgrafik NULL oder du hast eine Fehlermeldung, die dir dein Skript kaputt gehen lässt.

Beispiel 2 (alt):

   if (!isset ($_GET["B"]) && !isset ($_GET["H"]))
      return 'Die Angabe für die neue Breite oder Höhe fehlt';

   if (isset ($_GET["B"]))
      $Maximale_Breite = $_GET["B"];
# dazwischen liegende Verarbeitungsschritte
   if (isset ($_GET["H"]))
      $Maximale_Hoehe = $_GET["H"];

Beispiel 2 (neu):

   if (isset ($_GET["B"]))
      $Maximale_Breite = $_GET["B"];
# dazwischen liegende Verarbeitungsschritte
   if (isset ($_GET["H"]))
      $Maximale_Hoehe = $_GET["H"];

Du verlässt dich in der neuen Version darauf, dass $_GET["H"] und $_GET["B"] gesetzt sind, denn die früher vorhandene Prüfung hast du entsorgt. Setze für die Fälle, dass eine oder beide GET-Felder fehlen, Standardwerte über einen Else-Zweig oder eine Vorbelegung ein. Zudem sollte darauf geprüft werden, ob die Eingangswerte numerisch ist und in einem sinnvollen Bereich liegen.

Eventuell ist es auch sinnvoller, die Maximalgrößen der Thumbnails fest vorzugeben. Gibt es einen Grund, warum diese Größen jedesmal übermittelt werden und somit vom Benutzer beeinflussbar sind?

Vorbelegung:

   $Maximale_Breite = 100; # Standardwert
   if (isset ($_GET["B"]) and is_numeric($_GET["B"]) and $_GET["B"] > 40 and $_GET["B"] < 160)
      $Maximale_Breite = $_GET["B"]; # Standardwert wird nur bei vorhandenem $_GET["B"] überschrieben.

Else-Zweig

   if (isset ($_GET["B"]) and is_numeric($_GET["B"]) and $_GET["B"] > 40 and $_GET["B"] < 160) {
      $Maximale_Breite = $_GET["B"]; # Wert wird nur bei vorhandenem $_GET["B"] gesetzt.
   } else {
      $Maximale_Breite = 100; # Standardwert bei nicht vorhandenem $_GET["B"].
   }
# oder
   $Maximale_Breite = (isset ($_GET["B"])) ? $_GET["B"] : 100;

Tschö, Auge

--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war. Terry Pratchett, “Wachen! Wachen!