xstream: img-Tag und php-Datei benutzen

Hallo

Ich möchte eine php-datei in einen img-Tag einbinden, so wie das hier: <img scr='irgendwas.php?id=5'>
die Id wird benötigt, um ein bild aus einer Datenbank zu lesen. Wie muss nun aber die php-Datei programmiert sein, das es dieses Bild ausgibt? ich habe es einfach nicht geschaft.

Vielen Dank!

  1. Hallo xstream,

    Wie muss nun aber die php-Datei programmiert sein, das es dieses Bild ausgibt?

    Was hast du denn bisher geschafft?
    Letztlich muss dein Script nur den richtigen Content-Type-header senden und anschließend das Bild ausgeben...

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. ich hab einfach eine php-datei gschrieben, in der ein echo "<img scr='$url'>"; steht...

      kannst du vieleicht ein beispiel machen?

      1. Hallo xstream,

        ich hab einfach eine php-datei gschrieben, in der ein echo "<img scr='$url'>"; steht...

        Naja, dann bekommst du jenen image-Tag ausgegeben, nicht aber das Bild.

        kannst du vieleicht ein beispiel machen?

        Im </archiv/> wird es sicher etwas geben. Schau dich auch einmal auf http://php3.de/image um, dort wirst du ebenfalls fündig.

        Grüße
          David

        --
        >>Nobody will ever need more than 640k RAM!<<
        1981 Bill Gates
  2. hallo, habe gerade in diesem moment das gleiche problem (siehe (siehe mein posting unter http://forum.de.selfhtml.org/?t=91306&m=549055) und habe hier etwas dazu gefunden:

    http://www.webwork-community.net/posting2624_23_0.html

    Demnach sähe das so ungefähr aus:

    <?php
    error_reporting (E_PARSE);
    header("Content-type: image/jpeg");
    header("Content-Disposition: attachment; filename=Bild1.jpg");
    header("Content-Length: " . filesize(getcwd() . "/bilder/Bild1.jpg"));
    readfile(getcwd() . "/bilder/Bild1.jpg");
    ?>

    Bereite das gerade bei mir lokal vor, um es zu testen

    1. ok vielen dank! müsste gehen...

      1. ok vielen dank! müsste gehen...

        Nein, habe es getestet und leider geht es NICHT.

        So sieht mein Code in der Datei aus, wobei file und path übergeben werden mittels <img src="dateiname.php?file=test.jpg&path=test">:

        <?php
        // Variable holen
        $_GET["file"];
        $_GET["path"];

        // Welcher Typ?
        if (substr($file,-4) == ".gif") {$type = "gif";}
        if (substr($file,-4) == ".jpg" or substr($file,-5) == ".jpeg") {$type = "jpeg";}

        // Header senden
        header("Content-type: image/$type");
        header("Content-Disposition: attachment; filename=$file");
        header("Content-Length: " . filesize(getcwd() . "$path/$file"));
        readfile(getcwd() . "$path/$file.jpg");
        ?>

        Gibt man den Pfad zur Datei inklusive Variablen-Angaben direkt im Browser ein, dann starten IE und NS das Dateidownload-Fenster...

        Mist...

        1. Korrektur:

          readfile(getcwd() . "$path/$file.jpg");

          muss natürlich heissen

          readfile(getcwd() . "$path/$file");

          Ändert aber nichts daran, dass es nicht funzt.

          1. bei mir geht es ohne probleme...:
            <?php
            include('../config.php');
            mysql_connect($dbhost,$dbuser,$dbpasswd);
            mysql_select_db($dbname);
            $sql="SELECT * FROM webring WHERE id='$_GET[id]'";
            $counter=mysql_result(mysql_query($sql),0,'counter');
            @$counter=$counter/1000;
            $counter=$counter*10;
            $counter=round($counter);
            $img="ranks/$counter.gif";
            if ($counter>10) {
            $img="ranks/10.gif";
            }
            header('Location: '.$img.'');
            error_reporting (E_PARSE);
            header("Content-type: image/jpeg");
            header("Content-Disposition: attachment; filename=$counter.gif");
            header("Content-Length: " . filesize(getcwd() . "$img"));
            readfile(getcwd() . "$img");
            ?>

            mach mal no das hinein: vor error_:
            header('Location: '.$img.'');

            1. hi,

              bei mir geht es ohne probleme...:

              ... und ist trotzdem ziemlich falsch.

              header('Location: '.$img.'');

              hiermit löst du einen redirect auf eine andere adresse aus.
              da in $img allerdings kein absoluter URL steht, noch dazu fehlerhaft.

              error_reporting (E_PARSE);
              header("Content-type: image/jpeg");
              header("Content-Disposition: attachment; filename=$counter.gif");
              header("Content-Length: " . filesize(getcwd() . "$img"));
              readfile(getcwd() . "$img");
              ?>

              das alles kommt gar nicht mehr beim client an, da du ja vorher bereits einen redirect gemacht hast.

              dieses vorgehen ist unfug.

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            2. mach mal no das hinein: vor error_:
              header('Location: '.$img.'');

              Super, danke. Hatte außerdem einen Fehler in meinen Pfad-Angaben.

              Funktionieren tut das bei mir jetzt so, nur falls das mal jemand anderes hier interessiert:

              <?php
              // Variable holen
              $_GET["file"];
              $_GET["path"];

              $pathfile = $path."/".$file;

              // Welcher Typ?
              if (substr($file,-4) == ".gif") {$type = "gif";}
              if (substr($file,-4) == ".jpg" or substr($file,-5) == ".jpeg") {$type = "jpeg";}

              // Header senden
              header('Location: '.$pathfile.'');
              header("Content-type: image/$type");
              header("Content-Disposition: attachment; filename=$file");
              header("Content-Length: " . filesize(getcwd() . "$pathfile"));
              readfile(getcwd() . "$pathfile");
              ?>

              ABER leider umgeht diese Funktion nicht den htaccess-Schutz - so bin ich ja erst auf das Problem gestossen....

              siehe http://forum.de.selfhtml.org/?t=91306&m=549055

              Trotzdem vielen Dank

              1. hi,

                ABER leider umgeht diese Funktion nicht den htaccess-Schutz - so bin ich ja erst auf das Problem gestossen....

                natürlich nicht, weil auch du immer noch versuchst, per location-header die datei _direkt_ vom client anfordern zu lassen.

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        2. hi,

          Gibt man den Pfad zur Datei inklusive Variablen-Angaben direkt im Browser ein, dann starten IE und NS das Dateidownload-Fenster...

          ja genau dazu forderst du den client doch auch auf, mit folgendem header:

          header("Content-Disposition: attachment; filename=$file");

          unter http://www.webwork-community.net/posting2624_23_0.html steht doch übrigens auch explizit im eingangsposting, dass es um einen _download_ (ersatz für "speichern unter ...") des bildes geht.

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
          1. Hallo,

            unter http://www.webwork-community.net/posting2624_23_0.html steht doch übrigens auch explizit im eingangsposting, dass es um einen _download_ (ersatz für "speichern unter ...") des bildes geht.

            Ja, stimmt!!

            Und dass mit header:location einfach die neue Seite geladen wird, weiß ich eigentlich auch. Das ist wirklich Unfug.

            Habe schon eine Matschbirne von dem ewigen Herumgefusel an diesem Sch*-Problem. Eigentlich will ich das Bild deswegen über ein Script holen, damit ich einen htaccess-Schutz umgehen kann, wie gesagt, siehe http://forum.de.selfhtml.org/?t=91306&m=549055