dedlfix: Neuer Anlauf

Beitrag lesen

Tach!

if (isset ($_GET['Bild']))
      {
         if ($_GET['Bild'] != "")
         {

Das kann man zusammenfassen. empty() erzeugt auch keine Notice, wenn man nicht vorhandene Werte damit prüft.

if (preg_match ("/[1]*$/", $_GET['Bild']))
            {

Andererseits kannst du das isset() auch allein stehen lassen, denn der RegExp prüft ja ebenfalls auf nicht leere Werte, wenn man es richtig macht. + steht für 1 oder mehrere, * beinhaltet auch 0. Innerhalb einer [Zeichenklasse] sind Multiplikatoren sinnlos, weil eine Zeichenklasse immer nur für ein Zeichen steht. Multiplikatoren können nur dahinter stehen. Und so sind {1,} nichts besonderes, jedes Zeichen steht hier für sich selbst.

$Bild = "../GRAFIKEN/SORTIMENT/" . $_GET['Bild'] . ".png";

Jetzt wäre sinnvoll, zu prüfen ob $Bild überhaupt auf eine Bild-Datei verweist. Anderenfalls braucht es die Prüfungen der anderen Parameter nicht.

if (isset ($_GET['Breite']))
               {
                  if ($_GET['Breite'] != "")
                  {
                     if (preg_match ("/^\d{1,}$/", $_GET['Breite']))
                     {

!empty() und is_numeric() in einem if würde auch reichen. Du musst nur wissen, ob da eine Zahl drin ist, dann rechnen. Ansonsten auf gleiche Weise die Zahl im Höhenparameter suchen, und wenn da auch ncihts ist, dann reicht eine gemeinsame Fehlermeldung.

function GroesseBerechnen($Bild, $NeueBreite, $NeueHoehe)
   {
      $UrspruenglicheGroesse = getimagesize($Bild);

Jetzt wäre eine Prüfung angebracht, dass getimagesize() nicht false zurückgegeben hat.

$UrspruenglicheBreite = $UrspruenglicheGroesse[0];
      $UrspruenglicheHoehe  = $UrspruenglicheGroesse[1];

Mach es die nicht zu schwer mit den Variablennamen. Das musst du alles tippen und man muss es lesen. $x und $y sind schneller, für beides. $newX und $newY würde ich die anderen benennen.

if (!$Thumbnail = imagecopyresampled($Thumbnail, $Bild, 0, 0, 0, 0, $NeueBreite, $NeueHoehe, $UrspruenglicheBreite, $UrspruenglicheHoehe))
      imagepng($Thumbnail, "", 9);
Warning: imagepng() expects parameter 1 to be resource, boolean given

Ja, imagecopyresampled() gibt einen Boolean-Wert zurück. Den solltest du lieber direkt prüfen, statt ihn in $Tumbnail zu stecken, was eigentlich deine Variable für die Bildressource ist.

dedlfix.


  1. A-Za-z\d{1,} ↩︎