Oweia,
natürlich.
Muss ein Brett vorm Kopf gehabt haben.
Natürlich ist die sinnvollste Lösung:
1. Bilder oberhalb vom Root
2. Eine Php Datei prüft die Zugriffsrechte
3. Eine andere (könnte auch dieselbe sein)Php Datei
gibt das Bild inklusive Headerausgaben aus.
Somit geht natürlich auch wieder die <img>.
Wodurch mein Blackout?
Zum einen haben mich die Kommentare von Christoph
genervt. https://forum.selfhtml.org/?t=134788&m=874677
Desweiteren kam nicht ein einziges Mal ein Codeschnipsel
rüber, was uns zum Überlegen angeregt hätte.
So war ich dermaßen darauf fixiert nur eine Php Datei zu haben
die das Bild inklusive text ausgeben soll in einem Arbeitsgang.
Logisch, dass mit 2 Arbeitsgängen das geht, hat aber keiner
genau so gesagt, hiess immer nicht so und auch nicht so,
aber nie: So müsste man das machen, dann hätte ich es erkannt.
So nun mal zum Abschluss:
<?php
######################
/*
Hier muss jetzt noch die Berechtigungsprüfung rein.
Da ich nicht weiss, wie diese aussieht, lass ichs offen.
// if($_SESSION['xy'] != 'blabla'){die('ZUGRIFF VERBOTEN');}
*/
######################
$hier = $_SERVER['PHP_SELF'];
$bildverz = 'pics/'; // inkl. slash am Ende
$bildpfad = $_SERVER['DOCUMENT_ROOT'];
$bildpfad = str_replace('\\','/',$bildpfad);
$bildpfad = substr($bildpfad,0,strrpos($bildpfad,'/'));
$bildpfad = $bildpfad.'/'.$bildverz;
################# Ausgabesteuerung einzelne Bilder #############
if($_GET['pic'])
{
// Falls jetzt nochmehr Beschränkungen sein sollten,
// zb. weill vorher Thumbnails und jetzt Grossansicht,
// müsste hier noch mal eine seperate Prüfung stattfinden.
$pic = $_GET['pic'];
$pic = stripslashes($pic);
$pic = urldecode($pic);
if(!file_exists($bildpfad.$pic) ){echo '<h1>DATEI NICHT GEFUNDEN</h1>';}
// diese Ausgabe würde ich dann aber durch ein default image ersetzen
else{
clearstatcache();
$pictyp = str_replace('.','',strrchr($pic,'.'));
header('content-type:image/'.$pictyp);
header('Content-Disposition: filename='.$pic);
readfile($bildpfad.$pic);
exit(); // keine weitere Ausgabe
}
}
######### Eigentliche Seite #####################################
// Nur ein Beispiel zur Bildausagabe
if($godir = opendir($bildpfad))
{
while (false !== ($file = readdir($godir))){
$i++; if($i > 200){die('SICHERHEITS - STOP');}
if ($file == "." || $file == "..") {continue;}
$src = "$hier?pic=$file";
$imgs .= '<a href="'.$src.'"><img width="100" height="100" src="'.$src.'" border="0"></a><br>'."\r\n";
}
closedir($godir);
}
?>
<html>
<head>
<title>Galleria</title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<?php echo $imgs;?>
</body>
</html>
Hier befindet sich alles in einem File,
kann sowohl als galerie , als auch direkte Bildangabe
verwendet werden.
zb.
diesedatei.php
oder ->
diesedatei.php?pic=xyz.jpg
Gruss
Wolke