Bilder einlesen und ausgeben

Crazy X

Mitglied
Ich habe eine Seite erstellt, die man nur per login(formular) besuchen darf.

Die .htm Templates sieht man auch nur mit login, da sie sich in einem geschützten verzeichniss befinden, das nur Serverseitig mit PHP ausgelesen werden kann. So, alles kein Prob.

Doch leider kann man sich so keine Bilder anzeigen lassen. Da Bilder, die ganz normal mit einem img-Tag eingebunden sind, ja von dem Browser geladen werden und dieser keinen Zugriff hat auf das geschützte Verzeichniss.

Wie könnte man das am besten lösen, das auch die Bilder geschützt sind?

Mit PHP einlesen und ausgeben? Geht das auch bei gif? Oder habt ihr einfach mal ne bessere Idee? :p

Danke!
 
Möglichkeit 1)
Du löst den Login via htaccess. Wenn auch die Bilder innerhalb dieser geschützten Ebene liegen, dann kann man nicht einzeln auf sie zugreifen, sondern nur wenn man eingeloggt ist, könnenhtml Seiten oder man selbst (wenn man die url hat), sich das Bild anzeigen lassen.

Möglichkeit 2)
Das von dir angesprochene streamen von Bilddateien. Geht prinzipiell mit jpeg,gif und allem was du dir Vorstellen kannst bzw....ach ich denke nicht, dass du in Situationen kommst, wo das nicht klappt. Du sagst dem Browser ja in dem Sinne über die header Infos die du schickst. Achtung hier kommt jetzt ein Bild vom Typ image/jpeg (als Beispiel) damit ist für ihn völlig egal, welche Endung das ganze ursprünglich hatte usw. Er geht davon aus, es kommt eine gif, darauf stellt er sich ein und dementsprechend gibt er auch die Daten, die dann folgen aus.
 
Möglichkeit 1)

nö, des is ja billig :-) Will ja was dazulernen.


Möglichkeit 2)

Cool! Aber wie streame ich das am besten durch?

Geht's nicht leichter als so: ?
PHP:
function LoadJpeg ($imgname) {
    $im = @ImageCreateFromJPEG ($imgname); /* Versuch, Datei zu öffnen */
    if (!$im) {                            /* Prüfen, ob fehlgeschlagen */
        $im = ImageCreate (150, 30);       /* Erzeugen eines leeren Bildes */
        $bgc = ImageColorAllocate ($im, 255, 255, 255);
        $tc  = ImageColorAllocate ($im, 0, 0, 0);
        ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc);
        /* Ausgabe einer Fehlermeldung */
        ImageString($im, 1, 5, 5, "Fehler beim Öffnen von: $imgname", $tc);
    }
    return $im;
}

header ("Content-type: image/jpeg");
$im = LoadJpeg("logo.jpg") or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
Imagejpeg ($im);


Danke!
 
Öhm also das ist nun wirklich kollosal überdimensioniert ;)
PHP:
$file = "hierdeinedatei";
//hier musst du irgendwie (evtl mit getimagesize?) den Dateityprausbekommen
header("Content Type: bla"); // hier halt den oben ermittelnten Typ hin
readfile($file);

Done.

Hatte das mal in Verbindung mit einem Download gemacht aber sollte auch bei Bildern gehen.
 
Zurück