Bilder im Verzeichnis mit PHP indexieren

Wer viel fotografiert, kennt das Problem, dass man größeren Benutzerzahlen Fotos verfügbar machen will. Ein einzelnes großes ZIP-Archiv ist zwar ganz praktisch, aber dann muss sich jeder gleich alle Daten runterladen.

Netter ist es, wenn man die Bilder in einen Ordner im Netz hochladen und dort durchsehen kann. Es gibt dafür zahlreiche Tools, auch WordPress hat dafür entsprechende Themes und Plugins. Sehr simpel geht es aber auch mit einer relativ primitiven PHP-Indexierung:

<?php
# Version 1.0
?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
a {
color: <?php echo $_SESSION[linkfarbe]; ?>;
text-decoration: none;
font-weight: bold;
}
-->
</style>
<?php
# Nur für Bilder
$strDir = '.';
$filelist = scandir($strDir);

foreach ($filelist as $file) {
if ($file != "." && $file != ".." && $file != "index.php") {
$arrFiles[] = $file;
}
}

if ($_GET[file] == "") { $_GET[file] = $arrFiles[0]; }

# Anzeigeroutine
echo "<p align='center'><img src='$_GET[file]' height='40%'>";
# Nächstes Bild im Array herausfinden
$index = array_search($_GET[file],$arrFiles);
$prev = $index - 1;
$next = $index + 1;
echo "<br>$_GET[file]<br>";
if ($arrFiles[$prev] != "") {
echo "<font size='20px'><b><a href='index.php?file=".$arrFiles[$prev]."'>←</a></font></b> ";
}
if ($arrFiles[$next] != "") {
echo "<font size='20px'><b><a href='index.php?file=".$arrFiles[$next]."'>→</a></font></b></font>";
}

echo "</p>";

# Tabelleroutine
echo "<p align='center'><table cellpadding='5' cellspacing='5'><tr><th>Browse</th><th>Size</th><th>Save as</th></tr>";
foreach ($arrFiles as $file) {
if ($file == "index.php" || $file == "." || $file == "..") {} else {
$size = round(filesize($file)/1024);
echo "<tr><td bgcolor='F0F0F0'><a href='index.php?file=$file'>".$file."</a></td><td bgcolor='F0F0F0'>".$size." KB</td><td bgcolor='F0F0F0'><a href='$file' target=_blank>Download</a></td></tr>";
}
}
echo "</table></p>";
?>

Kommentar verfassen