Verzeichnis auflisten mit PHP

Mit PHP lassen sich sehr einfach Dateien und Verzeichnisse auf dem Webserver auflisten. PHP stellt dazu die Directory-Klasse zur Verfügung. Diese enthält geeignete Funktionen zum Umgang mit Verzeichnissen.

Ich möchte das hier an einem Beispiel zeigen. Dazu soll folgendes Verzeichnis aufgelistet werden:

Die hier oben abgebildeten Dateien und Verzeichnisse liegen im Verzeichnis files. Parallel dazu habe ich eine PHP Datei, die mir das Unterverzeichnis files ausliest und im Browser ausgibt – und das geht so:ECHT VITAL VITAMIN C - 1 Dose mit 100 g Pulver

Werbung

<?php
// Gibt eine Instanz der Directory Klasse an $dirHandle zurück
$dirHandle = dir("files");

// Verzeichnis Datei für Datei lesen
while (($f = $dirHandle->read()) != false) {
   echo $f."<br />";
}

// Verzeichnis wieder schließen
$dirHandle->close();
?>

Als Ergebnis erhält man beim Aufruf der Datei index.php folgende Liste im Browser dargestellt:

Im nächsten Schritt entferne ich die Punkte aus der Liste. Ein Punkt steht für das aktuelle Verzeichnis und die zwei Punkte für das übergeordnete Verzeichnis. Also wird der PHP code wie folgt ergänzt:

<?php
// Gibt eine Instanz der Directory Klasse an $dirHandle zurück
$dirHandle = dir("files");

// Verzeichnis Datei für Datei lesen
while (($f = $dirHandle->read()) != false) {
   // Nur ausgeben, wenn nicht . oder ..
    if ($f != "." && $f != ".."){
       echo $f."<br />";
    }
}

// Verzeichnis wieder schließen
$dirHandle->close();
?>

Jetzt sieht die Liste schon besser aus:

So, zum Schluss möchte ich noch die Verzeichnisse optisch von den “normalen” Dateien abheben. Darum frage ich vor der Ausgabe am Bildschirm, ob es sich um ein Verzeichnis handelt.

<?php
// Gibt eine Instanz der Directory Klasse an $dirHandle zurück
$dirHandle = dir("files");

// Verzeichnis Datei für Datei lesen
while (($f = $dirHandle->read()) != false) {
   // Nur ausgeben, wenn nicht . oder ..
    if ($f != "." && $f != ".."){
        // Wenn es sich um ein Verzeichnis handelt
        if (is_dir("files/".$f)){
            echo "<em>".$f."</em><br />";
        }
        else {
            echo $f."<br />";
        }
    }
}

// Verzeichnis wieder schließen
$dirHandle->close();
?>

Das sieht dann in etwas so aus:

Na dann, viel Spaß noch mit PHP 😉

1 Gedanke zu „Verzeichnis auflisten mit PHP“

  1. Gibt es da auch die Möglichkeit den Benutzer in einem Verzeichniss einzusperren, oder muss man sich da was anderes einfallen lassen?

Schreibe einen Kommentar