Mehrere Bilder mit PHP in Content einfügen
Es geht darum Bilder in den Content einzubinden die NICHT direkt aus dem Netz erreichbar sind / wie der Download einer geschützren Datei z.B.
Hallo zusammen,
hier erstmal der Stand.
Auf dem Webserver läuft die Domain unter .../user/domain/www/ INHALT
Die Bilder die ich anzeigen möchte liegen unter .../user/domain/hide/ ... > Dieses Verzeichnis ist aus dem Web nicht erreichbar.
Nun das Problem:
Ich möchte gerne eine kleine Galerie haben - kein Akt. Aber es sollen nur angemeldete Benutzer diese Bilder sehen können!
Dachte mir der Weg sei der einfachste....
... leider kann ich so immer nur ein Bild anzeigen, es sollen aber alle sein!
Hab nun schon den ganzen Abend gegoogelt
Kennt hier wer eine Lösung?
Danke schonmal ...
MfG Sam
Hallo zusammen,
hier erstmal der Stand.
Auf dem Webserver läuft die Domain unter .../user/domain/www/ INHALT
Die Bilder die ich anzeigen möchte liegen unter .../user/domain/hide/ ... > Dieses Verzeichnis ist aus dem Web nicht erreichbar.
Nun das Problem:
Ich möchte gerne eine kleine Galerie haben - kein Akt. Aber es sollen nur angemeldete Benutzer diese Bilder sehen können!
Dachte mir der Weg sei der einfachste....
header("content-type: image/jpeg"); //Mime Type setzen
$bilder = get_files_from_dir("../hide/fotos/test",true); //Pfade zu den Bildern ermitteln
foreach ($bilder as $file) { //Pfad für jedes einzelne Bild aufrufen
echo '<img src="' . readfile($file) . '"><br><br>'; //Bilder einfach untereinanderausgeben ....
}
function get_files_from_dir() { //par1 = Pfad; par2 = recrusive (optional) >> Alle gefundenen Bilderpfade in ein Array schreiben
$path = func_get_arg(0);
$array = array();
$dir = opendir($path);
while($content = readdir($dir)) {
if($content!="." && $content!=".." && is_dir($path . "/" . $content)) {
if(func_num_args()==2 && func_get_arg(1)==true) {
$array = array_merge($array, get_files_from_dir($path . "/" . $content));
}
}
elseif($content!="." && $content!="..") {
array_push($array,$path . "/" . $content);
}
}
closedir($dir);
return $array;
}
Hab nun schon den ganzen Abend gegoogelt
Kennt hier wer eine Lösung?
Danke schonmal ...
MfG Sam
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 144694
Url: https://administrator.de/contentid/144694
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
4 Kommentare
Neuester Kommentar
Du musst einen sehr netten Browser haben, wenn du tatsächlich ein Bild siehst
Hier sagst du, dass der Browser ein Bild erwarten soll.
Und hier fängst du dann auf einmal mit HTML an...
Aber gut, du hast zwei Möglichkeiten:
a) Die Bilder in HTML einbetten.
Von der Methode ist praktisch immer abzuraten, da du so eine riesige HTML-Datei bekommst und es nicht jeder Browser mitmacht
b) Erst eine HTML-Seite ausgeben, dann die Bilder laden:
(PHP 5.3 Syntax, ungetestet und ausbaufähig)
header("content-type: image/jpeg");
Hier sagst du, dass der Browser ein Bild erwarten soll.
echo '<img src="
Und hier fängst du dann auf einmal mit HTML an...
Aber gut, du hast zwei Möglichkeiten:
a) Die Bilder in HTML einbetten.
Von der Methode ist praktisch immer abzuraten, da du so eine riesige HTML-Datei bekommst und es nicht jeder Browser mitmacht
b) Erst eine HTML-Seite ausgeben, dann die Bilder laden:
#===== images.php
<html><body>
<?php
function listFilesRecursiveCallback($startDir,$callBackFunction)
{
if(substr($startDir,-1) == '/')
$startDir = substr($startDir, 0, -1);
$files = glob($startDir.'/*');
foreach ($files as $file) {
if(!is_readable($file))
continue;
if(is_dir($file))
listFilesRecursiveCallback($file,$callBackFunction);
else
$callBackFunction(substr($file, strlen($startDir)));
}
}
listFilesRecursiveCallback(dirname(__FILE__).'/../images',function($filename) {
echo '<img src="file.php?img='.urlencode($filename).'" alt="" /><br/>';
});
?>
</body></html>
#====== file.php
<?php
if(empty($_GET['img'])) {
header('HTTP/1.1 400 Bad Request');
exit(0);
}
$filename = urldecode($_GET['img']);
if(strpos($filename, "\x00") !== false) {
header('HTTP/1.1 400 Bad Request');
exit(0);
}
if(strpos($filename, '..') !== false) {
header('HTTP/1.1 400 Bad Request');
exit(0);
}
if($filename == '/')?
$filename = substr($filename, 1);
$file = dirname(__FILE__).'/../images/'.$filename;
if(!file_exists($file) || !is_readable($file)) {
header('HTTP/1.1 404 Not Found');
exit(0);
}
header('Content-Type: image/jpeg');
readfile($file);
?>
(PHP 5.3 Syntax, ungetestet und ausbaufähig)