Thumbnail Skript funktioniert nicht

metno

Erfahrenes Mitglied
Hallo
Ich habe ein Skript heruntergeladen das Thumbnails generiert. Leider scheitert es bei folgender Abfrage:

PHP:
    (!isset ($x) || ereg ('^[0-9]{1,}$', $x, $regs)) &&
    (!isset ($y) || ereg ('^[0-9]{1,}$', $y, $regs)) &&
    (isset ($x) || isset ($y))
      ? true
      : DIE ('Fehlende(r) oder ungültige(r) Größenparameter!');

Es wird die() ausgegeben. Was komisch daran ist, dass dieses Skript einwandefrei auf meiner Website funktioniert. Ich habe es 1:1 für diese Website übernommen. Brauche dringend hilfe, das Projekt muss morgen früh fertig sein.

Hier der ganz Code:

PHP:
<?php
    error_reporting(0);
 
    $types = array (1 => "gif", "jpeg", "png", "swf", "psd", "wbmp");

    define ('cache', 'cache/');

    $cachedir = substr($HTTP_GET_VARS['image'],0,strrpos($HTTP_GET_VARS['image'],'/') + 1).cache;
    !is_dir ($cachedir)
      ? mkdir ($cachedir, 0777)
      : system ("chmod 0777 ".$cachedir);
    
    (!isset ($x) || ereg ('^[0-9]{1,}$', $x, $regs)) &&
    (!isset ($y) || ereg ('^[0-9]{1,}$', $y, $regs)) &&
    (isset ($x) || isset ($y))
      ? true
      : DIE ('Fehlende(r) oder ungültige(r) Größenparameter!');
         
    !isset ($resize) || !ereg ('^[0|1]$', $resize, $regs)
        ? $resize = 0
        : $resize;

    !isset ($aspectratio) || !ereg ('^[0|1]$', $aspectratio, $regs)
         ? isset ($x) && isset ($y)
                ? $aspectratio = 1
                : $aspectratio = 0
         : $aspectratio;

    !isset ($image)
         ? DIE ('Es wurde kein Bild angegeben!')
         : !file_exists($image)
              ? DIE ('Die angegebene Datei konnte nicht auf dem Server gefunden werden!')
              : false;

    $imagedata = getimagesize($image);

    !$imagedata[2] || $imagedata[2] == 4 || $imagedata[2] == 5
         ? DIE ('Bei der angegebenen Datei handelt es sich nicht um ein Bild!')
         : false;
 
    eval ('
    if (!(imagetypes() & IMG_'.strtoupper($types[$imagedata[2]]).')) {
         DIE ("Das ".strtoupper($types[$imagedata[2]])."-Format wird nicht unterstützt!");
    }
    ');

    !isset ($x)
         ? $x = floor ($y * $imagedata[0] / $imagedata[1])
         : $x;

    !isset ($y)
         ? $y = floor ($x * $imagedata[1] / $imagedata[0])
         : $y;

   if ($aspectratio && isset ($HTTP_GET_VARS['x']) && isset ($HTTP_GET_VARS['y'])) {
         if ($imagedata[0] > $imagedata[1]) {
              $y = floor ($x * $imagedata[1] / $imagedata[0]);
         } else if ($imagedata[1] > $imagedata[0]) {
              $x = floor ($y * $imagedata[0] / $imagedata[1]);
         }
    }

    $thumbfile = substr ($HTTP_GET_VARS['image'], strrpos ($HTTP_GET_VARS['image'], '/') + 1);
    if (file_exists ($cachedir.$thumbfile)) {
         $thumbdata = getimagesize ($cachedir.$thumbfile);
         $thumbdata[0] == $x && $thumbdata[1] == $y
              ? $iscached = true
              : $iscached = false;
    } else {
         $iscached = false;
    }

    if (!$iscached) {
         ($imagedata[0] > $x || $imagedata[1] > $y) ||
         (($imagedata[0] < $x || $imagedata[1] < $y) && $resize)
              ? $makethumb = true
              : $makethumb = false;
    } else {
         $makethumb = false;
    }

    Header ("Content-Type: image/".$types[$imagedata[2]]);
 
    if ($makethumb) {
         $image = call_user_func("imagecreatefrom".$types[$imagedata[2]], $image);
         $thumb = imagecreatetruecolor ($x, $y);
         imagecopyresized ($thumb, $image, 0, 0, 0, 0, $x, $y, $imagedata[0], $imagedata[1]);
         call_user_func("image".$types[$imagedata[2]], $thumb, $cachedir.$thumbfile);
         imagedestroy ($image);
         imagedestroy ($thumb);
         $image = $cachedir.$thumbfile;
    } else {
         $iscached
              ? $image = $cachedir.$thumbfile
              : $image = $HTTP_GET_VARS['image'];
    }
    $image = fopen ($image, "rb");
    fpassthru ($image);
    fclose ($image);
 
?>



Quelle: http://www.flashdreams.de/tuts/php-tutorials/phpthumbnails.html

Funktionierendes Skript: http://www.danooz.ch
Nicht funktionierendes Skript: http://www.theater-rita.ch
 
PHP:
(!isset ($x) || ereg ('^[0-9]{1,}$', $x, $regs)) &&
    (!isset ($y) || ereg ('^[0-9]{1,}$', $y, $regs)) &&
    (isset ($x) || isset ($y))
      ? true
      : DIE ('Fehlende(r) oder ungültige(r) Größenparameter!');
Was soll das denn? Und wo kommen die Variablen $x und $y her?
 
Die Syntax ist mir durchaus bekannt. Nur verstehe ich nicht was diese Prüfung bezwecken soll oder besser gesagt warum du genau diese Bedingungen gewählt hast.
 
// Wurde mindestens ein Größenparameter übergeben und ist/sind diese(r) numerisch?
(!isset ($x) || ereg ('^[0-9]{1,}$', $x, $regs)) &&
(!isset ($y) || ereg ('^[0-9]{1,}$', $y, $regs)) &&
(isset ($x) || isset ($y))
? true
: DIE ('Fehlende(r) oder ungültige(r) Größenparameter!');

Steht doch alles da, auch wenn ich dies als veraltet sehe.
 
ach ja sorry. ich binde ein Thumbnail mit

<img src="pics_thumbnails.php?image=pics/bild1.jpg&x=200&y=200&aspectratio=1" />

ein. Und übrigens war die Seite http://www.theater-rita.ch nicht up to date. Habe ich jetzt nachgeholt und einen border um die "Thumbnails" gesetzt, damit man sieht, wo sie erscheinen sollten.
 
Danke Gumbo. Jetzt klappts endlich. Mir ist das mit den GET Variblen gar nicht aufgefallen. :-)

Jetzt werde ich doch noch fertig.
 
Zurück