Sönke Tesch: Verzeichnisse und Unterverzeichnisse auslesen

Beitrag lesen

PS: Das erste Verzeichnis wird -wie gewünscht- ausgelesen. Ebenso das zu dem jeweiligen Link führende Unterverzeichnis. Nur eine  Verzweigung in ein weiteres Unterverzeichnis ist nicht möglich. Es gibt folgende Fehlermeldung:
Warning: OpenDir: No such file or directory (errno 2) in

Aha, da haben wir das Problem: Die Unterverzeichnisse der zweiten Ebene erscheinen nicht mit vollem Pfad in der URL.

/
  +--a/
  |  +--1/
  |  +--2/
  |
  +--b/
  +--c/

Wenn Du den Inhalt von /a/1/ anzeigen willst, mußt Du auch /a/1/ angeben, damit $dir korrekterweise zu "/blabla/a/1" wird und nicht, wie momentan, zu "/blabla/1". Die erste Ebene funktioniert noch, weil /a ja tatsächlich im Wurzelverzeichnis liegt. In der Zeile

echo "<a href="nextTry.php?folderName=$datei">$datei</a>(dir)<br>";

fehlt also die Angabe des aktuellen Pfades:

echo "<a href="nextTry.php?folderName=$folderName/$datei">$datei</a>(dir)<br>";

Noch zwei Tipps:

  • Benutze doch für eine Liste <ul> und <li> statt <br>, dafür sind sie da.
  • Pass auf, daß Dir niemand Schweinereien in die URL setzt. Momentan ist es bei Dir ohne weiteres möglich, durch Einsetzen von ein paar .. in die URL den gesamten Verzeichnisbaum des Servers auszulesen, nicht nur den von Dir vorgesehenen. "nextTry.php?folderName=../../../../.." führt zum Beispiel direkt nach /data. Also: Überprüfe _grundsätzlich_ alles, was von draußen kommt!
    Und man kann ebenso wunderbar von außen HTML-, CSS- und Javascript-Code in die Seite einbauen, da Du $folderName einfach ungesichert ausspuckst. Benutze _grundsätzlich_ bei der Ausgabe von Benutzereingaben htmlentities()!. Oder besser: bei Daten allgemein, denn woher willst Du zum Beispiel wissen, daß die Verzeichnisnamen kein HTML enthalten?
    Auch wenn solcher Unfug im vorliegenden Fall nicht allzu schwerwiegend ist, es gibt genug selbstgeschrieben Gästebücher und Foren, die man mit einem entsprechenden <script>- oder <style>-Eintrag ohne weiteres (optisch) zerlegen kann.

Gruß,
  soenk.e