Verzeichnisinhalt durchsuchen

Eiszwerg

Erfahrenes Mitglied
Hallo zusammen,

ich möchte eine Mini-Gallery erstellen und habe mir gedacht, dass ich einfach ein entsprechendes Verzeichnis nach Unterordnern durchsuche und diese dann später mit einem weiteren Script auslese.
Mein Problem ist nun, dass ich das Script, welches den Hauptordner nach Unterordnern durchsuchen nicht wirklich fündig wird. Im wahrsten Sinne des Wortes.

Ich habe folgende Ordnerstruktur:
Hauptordner
-code [hier liegen die Scripts]
-gfx [Grafik-Hauptordner]
--show [Haupt-Ordner für Gallery]
---Gallery1 [Unterordner für Gallerybilder]
---Gallery2 [Unterordner für Gallerybilder]
---Gallery3 [Unterordner für Gallerybilder]
--marken [andere Bilder]

Das Script soll nun alle Unterordner im Ordner "show" auflisten und als Link darstellen. Tut es aber nicht:confused:
Brauche diesbezüglich bitte einen Denkanstoss.

PHP:
<?
if ($start_ordner == "") $start_ordner = "../gfx/show/" ;
$verzeichnis = opendir($start_ordner);
while ($file = readdir ($verzeichnis)) 
{
    if(is_dir($file) && $file!="." && $file!="..") 
    {
        echo "<a href='home.php?site=show&start_ordner=$file'>$file</a><br />";
    } 
}

closedir($verzeichnis);
?>
 
Im Script ansich sehe ich keinen Fehler. Versuch mal den kompletten Pfad für den Ordner "show" anzugeben. Also die komplette Ordnerstruktur als Pfad zu nutzen. Beispiel Linux: "/var/www/page/ordner/show/"
 
is_dir($file) wird in Deinem Fall nie true sein.
Das Problem dabei ist, dass Dir readdir() lediglich den Datei-/Verzeichnisnamen zurueckgibt, und nicht den vollstaendigen Pfad. Das haettest Du durch einen kurzen Test (einfach die Ausgabe aller Funde) auch sehr schnell rausfinden koennen. ;)
Du musst also sowohl bei is_dir() als auch beim Link den Rest Deines Pfades (also
../gfx/show/) noch hinzufuegen.
Weiterhin rate ich Dir, im Sinne der Portabilitaet <? durch <?php zu ersetzen und $start_ordner aus $_GET zu holen, falls es denn uebergeben wurde.
Also z.B. so:
PHP:
if (!empty($_GET['start_ordner']))
{
 $start_ordner=$_GET['start_ordner'];
}
else
{
 $start_ordner='../gfx/show/';
}
Und ausserdem moechte ich Dich auf die Gefahr hinweisen, dass Dein Script unter Umstaenden dazu genutzt werden kann die gesamte Platte zu durchsuchen. Man sieht zwar nur Verzeichnisse, aber trotzdem ist das sicher nicht gewuenscht.
 
Erst einmal vielen Dank für die Hinweise und Anregungen. Ein Sicherheitsproblem ist nicht zu befürchten, da das Script in einem LAN zum Einsatz kommt.

Ich werde nun die Tips umsetzen und mich ggf. noch einmal melden.
 
Zurück