freude: thumbnails

hallo zusammen,

kann mir jemand erklären was ich falsch mache?

#test.php
<?php
   $verz = dir("C:/MonWeb/Grafiken/Bilder/");
   while ($datei = $verz->read())
   {
    if (eregi(".jpg$", $datei))
    {
     echo("<a href='".$datei."'>");
     echo("<img src='thumb.php?image=".$datei."'>");
     echo("</a>\n");
    }
   }
  ?>
#test.php

<?php

#thumb.php
header("Content-type: image/jpeg");
$scale = 2;

$size = getimagesize($_GET[image]);
$width = round($size[0]/$scale);
$height = round($size[1]/$scale);
$src = imagecreatefromjpeg($_GET[image]);
$dest = imagecreate($width,$height);
imagecopyresized($dest,$src,0,0,0,0,$width,$height,$size[0],$size[1]);
imagejpeg($dest);
imagedestroy($dest);
imagedestroy($src);
?>
#thumb.php

  1. Hi,

    kann mir jemand erklären was ich falsch mache?

    gewöhne dir an, error_reporting(E_ALL); zu setzen, in deinen Fragen den auftretenden Fehler sowie das gewünschte Ziel zu nennen und Dateipfade, die du dir vom User übergeben lässt zu prüfen, damit dieser nicht auf deine gesamte Verzeichnisstruktur zugreifen kann.

    Schöne Grüße
    Julian

    1. vielen Danke für die Antwort und für die Ratschläge.

      ich habe error_reporting(E_ALL); gesetzt, aber das bringt nichts.

      Ich habe ein Verzeichnis in dem JPG-Dateien liegen. Diese sollen als
      Thumbnails angezeigt werden und bei klick vergrößert.  Es erscheint die "durchbrochene Grafik"
      (Wenn ein Bild nicht gefunden wird/dargestellt werden kann). Das Anzeigen der ttumbnails fonktionniert also nicht.

      Hi,

      kann mir jemand erklären was ich falsch mache?

      gewöhne dir an, error_reporting(E_ALL); zu setzen, in deinen Fragen den auftretenden Fehler sowie das gewünschte Ziel zu nennen und Dateipfade, die du dir vom User übergeben lässt zu prüfen, damit dieser nicht auf deine gesamte Verzeichnisstruktur zugreifen kann.

      Schöne Grüße
      Julian

      1. Hi,

        vielen Danke für die Antwort und für die Ratschläge.

        mit "Dateipfade, die du dir vom User übergeben lässt zu prüfen" meinte ich, dass du sicherstellst, das niemand z. B. per "../" aus dem Verzeichnis rauswechselt und Dateien liest, die nicht gelesen werden sollen.

        ich habe error_reporting(E_ALL); gesetzt, aber das bringt nichts.

        Habe ich auch nicht erwartet. War ein allgemeiner Hinweis, da das oft zur Findung des Fehlers beiträgt.

        Ich habe ein Verzeichnis in dem JPG-Dateien liegen. Diese sollen als
        Thumbnails angezeigt werden und bei klick vergrößert.  Es erscheint die "durchbrochene Grafik"
        (Wenn ein Bild nicht gefunden wird/dargestellt werden kann). Das Anzeigen der ttumbnails fonktionniert also nicht.

        Was passiert wenn du die thumbs.php direkt mit dem GET-Parameter aufrufst? Ist das bei der thumbs.php fehlende "<?php" am Anfang ein Kopierfehler?

        Schöne Grüße
        Julian

        1. wenn ich thumb.php aufrufe (ist das was du meinst?)
          dann habe ich:

          <br />
          <b>Notice</b>:  Undefined index:  image in <b>C:\MonWeb\Grafiken\thumb.php</b> on line <b>5</b><br />
          <br />
          <b>Fatal error</b>:  Call to undefined function:  imagecreatefromjpeg() in <b>C:\MonWeb\Grafiken\thumb.php</b> on line <b>8</b><br />

          schöne Grüsse,

          Hi,

          vielen Danke für die Antwort und für die Ratschläge.

          mit "Dateipfade, die du dir vom User übergeben lässt zu prüfen" meinte ich, dass du sicherstellst, das niemand z. B. per "../" aus dem Verzeichnis rauswechselt und Dateien liest, die nicht gelesen werden sollen.

          ich habe error_reporting(E_ALL); gesetzt, aber das bringt nichts.

          Habe ich auch nicht erwartet. War ein allgemeiner Hinweis, da das oft zur Findung des Fehlers beiträgt.

          Ich habe ein Verzeichnis in dem JPG-Dateien liegen. Diese sollen als
          Thumbnails angezeigt werden und bei klick vergrößert.  Es erscheint die "durchbrochene Grafik"
          (Wenn ein Bild nicht gefunden wird/dargestellt werden kann). Das Anzeigen der ttumbnails fonktionniert also nicht.

          Was passiert wenn du die thumbs.php direkt mit dem GET-Parameter aufrufst? Ist das bei der thumbs.php fehlende "<?php" am Anfang ein Kopierfehler?

          Schöne Grüße
          Julian

          1. <b>Notice</b>:  Undefined index:  image in <b>C:\MonWeb\Grafiken\thumb.php</b> on line <b>5</b><br />

            Und warum nimmst du nicht $_GET, wenn du register_globals off hast?
            Sind Grundlagen von PHP, die du dir erstmal erarbeiten solltest, bevor du dich an Bildbearbeitung machst.

            1. mein datei sieht so aus. ich habe schon $_GET genommen, aber das fonktionniert nicht.

              <?php
              error_reporting(E_ALL);
              header("Content-type: image/jpeg");
              $scale = 2;
              $size = getimagesize($_GET['image']);
              $width = round($size[0]/$scale);
              $height = round($size[1]/$scale);
              $src = imagecreatefromjpeg($_GET['image']);
              $dest = imagecreate($width,$height);
              imagecopyresized($dest,$src,0,0,0,0,$width,$height,$size[0],$size[1]);
              imagejpeg($dest);

              imagedestroy($dest);
              imagedestroy($src);
              ?>

              <b>Notice</b>:  Undefined index:  image in <b>C:\MonWeb\Grafiken\thumb.php</b> on line <b>5</b><br />

              Und warum nimmst du nicht $_GET, wenn du register_globals off hast?
              Sind Grundlagen von PHP, die du dir erstmal erarbeiten solltest, bevor du dich an Bildbearbeitung machst.

              1. Hallo freude,

                mein datei sieht so aus. ich habe schon $_GET genommen, aber das fonktionniert nicht.

                <?php
                error_reporting(E_ALL);
                header("Content-type: image/jpeg");
                $scale = 2;
                $size = getimagesize($_GET['image']);
                $width = round($size[0]/$scale);
                $height = round($size[1]/$scale);
                $src = imagecreatefromjpeg($_GET['image']);
                $dest = imagecreate($width,$height);
                imagecopyresized($dest,$src,0,0,0,0,$width,$height,$size[0],$size[1]);
                imagejpeg($dest);

                imagedestroy($dest);
                imagedestroy($src);
                ?>

                Schreib doch mal vor Zeile 5 folgendes hin:

                  
                print_r($_GET);  
                
                

                Was wird da angezeigt?
                Wenn du $_GET['image'] verwenden willst, musst du es auch vorher initialisieren. Das geht am besten indem du dein Script im Browser mit entsprechendem Parameter aufrufst. Beispielsweise so:

                http://meinserver/mein_pfad/thumb.php?image=wasauchimmer

                "wasauchimmer" dürfte hier für den Pfad zu deiner Grafik-Datei stehen. Und damit kommen wir zum wahrscheinlich nächsten Problem. Bestimmte Zeichen, die in Pfadangaben erlaubt sind, sind in URLs verboten und müssen daher maskiert werden. Guckst du urlencode() und urldecode().

                MffG
                EisFuX

                P.S.: Bitte klebe nicht dauernd das komplette Ausgangsposting unter deine Antwort. Die von dir beantworteten Passagen genügen völlig.

                --
                ... Suchmaschinen-Blog ...
                1. Hallo Eisfux,

                  Hallo freude,

                  mein datei sieht so aus. ich habe schon $_GET genommen, aber das fonktionniert nicht.

                  <?php
                  error_reporting(E_ALL);
                  header("Content-type: image/jpeg");
                  $scale = 2;
                  $size = getimagesize($_GET['image']);
                  $width = round($size[0]/$scale);
                  $height = round($size[1]/$scale);
                  $src = imagecreatefromjpeg($_GET['image']);
                  $dest = imagecreate($width,$height);
                  imagecopyresized($dest,$src,0,0,0,0,$width,$height,$size[0],$size[1]);
                  imagejpeg($dest);

                  imagedestroy($dest);
                  imagedestroy($src);
                  ?>

                  Schreib doch mal vor Zeile 5 folgendes hin:

                  print_r($_GET);

                    
                  ich habe dann folgende Fehlermeldung:  
                  Array  
                  (  
                  )  
                  <br />  
                  <b>Notice</b>:  Undefined index:  image in <b>C:\MonWeb\Grafiken\thumb.php</b> on line <b>12</b><br />  
                  <br />  
                  <b>Fatal error</b>:  Call to undefined function:  imagecreatefromjpeg() in <b>C:\MonWeb\Grafiken\thumb.php</b> on line <b>15</b><br />  
                    
                    
                    
                  
                  >   
                  > Was wird da angezeigt?  
                  > Wenn du $\_GET['image'] verwenden willst, musst du es auch vorher initialisieren. Das geht am besten indem du dein Script im Browser mit entsprechendem Parameter aufrufst. Beispielsweise so:  
                  >   
                  > http://meinserver/mein\_pfad/thumb.php?image=wasauchimmer  
                    
                  das habe ich in test.php(siehe meine erste Posting),  
                    
                  ich habe weiter geschrieben :  
                    
                  echo("<img src= 'http://localhost/Grafiken/thumb.php?image=".$datei."'>");  
                    
                  aber es hat nicht gebracht.  
                    
                  
                  >   
                  > "wasauchimmer" dürfte hier für den Pfad zu deiner Grafik-Datei stehen. Und damit kommen wir zum wahrscheinlich nächsten Problem. Bestimmte Zeichen, die in Pfadangaben erlaubt sind, sind in URLs verboten und müssen daher maskiert werden. Guckst du [urlencode()](http://de.php.net/manual/de/function.urlencode.php) und [urldecode()](http://de.php.net/manual/de/function.urldecode.php).  
                  >   
                    
                  kannst du mir bitte genauer erklären was du mit urlencode und urldecode meinst? oder wie ich das einsetze?  
                    
                  Schöne Grüsse,  
                    
                  
                  > MffG  
                  > EisFuX  
                  >   
                  > P.S.: Bitte klebe nicht dauernd das komplette Ausgangsposting unter deine Antwort. Die von dir beantworteten Passagen genügen völlig.
                  
                  1. Also jetzt liest du erstmal http://learn.to/quote
                    Wenn du damit fertig bist, liest du http://forum.de.selfhtml.org/hilfe/charta.htm#tipps-fuer-fragende

                    Und wenn du damit fertig bist, stellst du deine Frage, aufgrund der neugewonnenen Erkenntnisse, neu. Dann ist es evtl. auch möglich, dir Hilfe zu geben.

                    Ich finds langsam echt nervig, das du nicht in der Lage bist, anstänige Debuginfos zu Posten, nein, nichtmal ne richtige Fehlermeldung.

                    Du analysierst deine übergebenen Daten nicht, du fängst keine Fehler ab. Schlicht, du stümperst nur vor dich hin.

                    1. was heisst eine richtige Fehlermeldung?
                       welche (nicht richtige) Fehlermeldung habe ich geschrieben?

                      1. Ist in Ordnung, ich verstehe was du meinst. Ich werde versuchen, mehr PHP zu lernen und danach wenn ich nicht weiter weiss, stelle ich Hier meine Fragen.
                        Danke trotzdem.

          2. Hi,

            <b>Fatal error</b>:  Call to undefined function:  imagecreatefromjpeg() in <b>C:\MonWeb\Grafiken\thumb.php</b> on line <b>8</b><br />

            dein primäres Problem scheint fehlendes GD/fehlender JPG-Support zu sein.

            Schöne Grüße
            Julian

  2. Hi,

    kann mir jemand erklären was ich falsch mache?

    Du gibst keine Fehlerbeschreibung ab, Sagst nicht, welche Fehlermeldung kommen, behälst für dich, welche Debuggingversuche du unternommen hast ..... Im Endeffekt sagst du gar nichts, was uns dabei hilft, dein Problem zu verstehen.

    while ($datei = $verz->read())

    Wieso machst du es anders, als das Beispiel unter http://de2.php.net/manual/de/class.dir.php? Es wird wohl nen Grund haben, warum die auf !== false prüfen.

    Ansonsten steht in den Beispielen auf http://www.php.net alles drin. Wenn du diese verstanden hast und es immer noch nicht klappt, kannst du, mit einer passenden Problembeschreibung, durchaus nochmal nachfragen, dann kann dir evtl. auch geholfen werden.

  3. Hi,

    kann mir jemand erklären was ich falsch mache?

    [..]

    echo("<a href='".$datei."'>");
         echo("<img src='thumb.php?image=".$datei."'>");

    Der Pfad stimmt nicht.
    [..]
    gruß
    Lukas

  4. Hallo, du benötigst GD-Lib um die funktionen zu nutzen. Prüfe mal, ob das auf deinem Server installiert ist!
    Ich denke nicht!

    Grüße Guma

    1. Hallo.

      Ich denke nicht!

      Oh.
      MfG, at