Negro: Ausgabe Bild

Hallo,

ich habe ein kleiens Upload-Formular in PHP realisiert, mit dem man die ausgewählte Datei in ein VErzeichnis auf dem Webserver hochlädt und den Dateinamen (Bilddatei) in einer Datenbank speichert.

Nur wie kann ich es jetzt erreichen, das mir das Bild, je nach Datensatz entsprechend angezeigt wird. Also varibale Pfadangabe ???

Besten Dank für jeden Tipp !

MFG
Negrp

  1. Hello,

    was ist denn das kennzeichnende Element dafür, dass die Bilder angezeigt werden sollen?

    1. Bau Dir erstmal die "normale" HTML-Seite und lass Platzhalter überall
       dort, wo dynamische Inhalte kommen sollen: <!-- Element 0017 -->
    2. Dann schreibst Du ein Script, dass die Elemente zusammenstellt
       $element = array();
       $element[17] = "<b>Hier steht fetter Text</b>";
       $element[18] = "<img src="".PICPATH."/".$bildname."">";

    3. Dann ersetzt Du die Platzhalter durch entprechende
       echo-Anweissungen: <?php echo $element[234]; ?> oder noch besser, Du
       schreibst Dur eine Funktion, die die Ersetzung automatisch vornimmt.
       Dann hast Du nämlich schon eine eigene kleine Template-Engine

    Wenn Du den PICPATH innerhalb der Document-Root hast, dann solltest Du die Bildnamen durch zufällige Schlüssel ( unique_id()) ergänzen:

    $bildname = uniqueid($original_bildname_ohne_suffix).$suffix;

    und unter diesem Namen in das Verzeichnis stellen.

    Dann brauchst Du Dir über Bildergrabber fast keine Gedanken mehr zu machen. Es können dann nur noch die Bilder geklaut werden, die Du sowieso anzeigen wolltst oder deren Namen man zufällig rät.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Danke erstmal !

      Die Upload-Seite ist eh nicht für jeden zugänglich und durch htaccess gesichert !

      Mir geht es nur darum, das jemand ein Formular hat mit einem Textfeld und einem, wo er die hochzuladende Bilddatei auswählt. Das mit dem Upload klappt wunderbar. Auch der Dateiname wird passend zum eingegebenen Text in der DB gespeichert.

      Wenn ich jetzt durch eine SQL-Anweisung nur bestimmte Datensätze anzeigen lassen will, soll der Text und das dazu passende Bild was bei der Eingabe hochgeladen wurde angezeigt werden.

      Keine Ahnung, aber kann man da eventuell nich ganz einfach den IMG-Tag um die entsprechenden Dateinamen und den festen Pfad (Ordner: /upload/) erweitern und somit eine sozusagen "varibale Bildanzeige" basteln ?

      Danke !

      Negro

      1. Hallo,

        Keine Ahnung, aber kann man da eventuell nich ganz einfach den IMG-Tag um die entsprechenden Dateinamen und den festen Pfad (Ordner: /upload/) erweitern und somit eine sozusagen "varibale Bildanzeige" basteln ?

        Ich habe irgendwie den Eindruck, dass Du mit PHP und Datenbanken
        rumbastelst, obwohl Du beim Grundlagenwissen, naemlich HTML,
        noch sehr grosse Luecken hast.

        Was und wie Du bastelst, spielt ueberhaupt keine Rolle.
        Was zaehlt, ist allein der HTML-Quellcode der Seite,
        die dem Endbenutzer ausgeliefert wird.

        Falls Du darin relative URL-Angaben schreiben willst,
        dann spielen die URL der HTML-Seite sowie die URL
        der Grafik-Datei eine Rolle.

        Wenn Du wegen dem PHP/SQL Gebastel den Durchblick verlierst,
        gibt es eine ganz simple Methode:
        Mach eine statische HTML-Seite genau an der Stelle,
        wo das ausgebende PHP-Skript steht (d.h. im gleichen Verzeichnis).
        Mach dort ein <img> Tag rein und schreibe den Pfad zum
        Bild so, dass dieses eingebunden wird.
        _Nun_ kannst Du wieder zu PHP/SQL wechseln und dafuer
        sorgen, dass das PHP-Skript den korrekten Pfad in
        den HTML-Quelltext schreibt.
        Die Funktion getimagesize() ist so nett und liefert Dir
        gleich den String
        width="123" height="56"
        den Du ins <img> Tag einbauen kannst.

        http://selfhtml.teamone.de/html/allgemein/referenzieren.htm
        http://selfhtml.teamone.de/html/grafiken/einbinden.htm

        http://www.php.net/manual/en/function.getimagesize.php
        http://www.php.net/manual/de/function.getimagesize.php (unvollstaendig)

        Gruesse,

        Thomas

        1. Hallo,

          oder man "bastelt" weiter rum, und kommt zu folgenden Ergebnis:

          <img src="http://mitglied.lycos.de/testseite123/dirupload/<?php echo $row_Recordset1['upload']; ?>">

          Trotzdem Danke !

          PS: Wie kann ich eigentlich nach dem auswählen des Bildes durch den Beutzer das Foto austomatisch auf eine fest definierte Größe verkleinern und dann erst hochladen ?

          1. Hallo,

            PS: Wie kann ich eigentlich nach dem auswählen des Bildes durch den Beutzer das Foto austomatisch auf eine fest definierte Größe verkleinern und dann erst hochladen ?

            Gar nicht.
            Zumindest nicht automatisch.

            Du kannst den Benutzer freundlich auffordern, es zu tun.
            Vielleicht mit einem Hinweis auf http://www.irfanview.com/

            Auf dem Webserver kannst Du _nach_ dem Hochladen pruefen,
            wie gross die Foto ist (Dimensionen und Dateigroesse).
            Wenn sie zu gross ist, kannst Du sie ja gleich wieder loeschen
            und dem Benutzer eine entsprechende Meldung ausgeben.

            Auf dem Tripod-Webspace laeuft eine Abart von 4.3.2,
            und die GD Bibliothek steht zur Verfuegung.
            Die Funktion phpinfo() verraet:
            GD Support         enabled
            GD Version         2.0 or higher
            FreeType Support   enabled
            FreeType Linkage   with freetype
            JPG Support        enabled
            PNG Support        enabled
            WBMP Support       enabled

            Du koenntest also die Bilder nach dem Hochladen
            auf dem _Server_ entsprechend runterrechnen.
            Wenigstens JPEG-Bilder, aber da Du ja von Fotos sprichst,
            nehme ich an, dass keine GIFs darunter sein werden.

            Gruesse,

            Thomas

            1. Alles klar ! Danke Thomas.

              Grüße
              Negro

            2. Hello,

              PS: Wie kann ich eigentlich nach dem auswählen des Bildes durch den Beutzer das Foto austomatisch auf eine fest definierte Größe verkleinern und dann erst hochladen ?

              Gar nicht.

              Aber du kannst kleine Hilfen einbauen, die manche Browser anbieten. Schreib eine hidden-Variable dazu

              <input type="file"....>
              <input type="hidden" name="MAX_FILIE_SIZE" value="$maxfilesize">

              ist natürlich symbolisch gemeint mit $maxfilesize

              Manche Browser sind so freundlich und beachten das. Das spart zumindest unnötigen Traffic.

              Kontrolliert wird auf dem Server

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            3. Hallo !

              Noch eine Frage zu diesem Problem:

              Das oben beschriebene Problem mit der Ausgabe der Bilddatei habe ich jetzt ja so gelöst:

              <img src="http://mitglied.lycos.de/test1234/upload/<?php echo $row_Recordset1['upload']; ?>" hspace="15" border="1" align="left">

              Ich lasse mir alle Datensätze in einem "Wiederholten Bereich" (so heißt das in Dreamweaver MX) darstellen.
              Nur, nicht jedem Datensatz wurde eine Grafik zugewiesen. In diesem Falle sollte natürlich der IMG-TAG an dieser Stelle nicht verwendet werden. Kann ich das irgendwie überprüfen und lösen ? Wenn ja, wie ?

              Vielen Dank !

              MFG
              Negro

  2. Huhu Nero

    Also zunächst musst Du bei jedem Upload durch - potentiell immer "böse" - Besucher sicherstellen, dass Dir niemand ein Kuckucksei (z.B. ein garstiges Skript) in Dein Webnest legt.

    Also müssen die hochgeladenen Dateien ausserhalb des Webverzeichnisses abgelegt werden (damit sind sie nicht per http aufrufbar).
    Bei Bildern kannst Du diese noch mit getimagesize daraufhin prüfen, ob es tatsächlich Bilder sind.

    Um die Bilder dann auf Deiner Webseite auszugeben brauchst Du dann nur noch ein kleines Skript welches die Dateien "durchreicht".
    Das könnte z.B. so ausschauen:

    <img src="gimmethepic.php?id=4" alt="">

    Mittels des Get-Parameter id würde dann der entsprechende
    Datensatz identifiziert werden.

    Oder Du baust Dir eine Funktion welche den kompletten IMG-Tag zusammenbaut. Dann könntest Du auch die width und height Werte richtig angeben und z.B. eine Bildbezeichnung (aus der Datenbank)
    als title angeben.

    Z.B. ungefähr so

    function get_img_tag_by_id($id)
    {
      // $id auf validität prüfen!
      // entsprechenden Datensatz holen
      // per getimagesize die Bildinfos (Abmessungen) holen
      // die Werte in "Tag-Template" einsetzten
    also z.B.

    $img_tag = sprintf('<img src="gimmethepic.php?id=%d title="%s" %s>',$id,$BildnameAusDerDatenbank, $Abmessungen);

    return $img_tag;
    }

    das "gimmethepic"-Skript holt den der jeweiligen id zugehörigen Dateinamen aus der Datenbank, schickt einen entsprechenden header und reicht die Datei durch.
    (Oder z.B. eine Default-Grafik um ungültige/ fehlende Grafiken anzuzeigen)
    Fertig.

    so in etwa könnte das funktionieren

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday