Felix Riesterer: ordner auslesen - mit gimmicks...?!

Beitrag lesen

Liebe Seta,

Dein Problem ist kein sehr großes... ich zeige Dir, warum.

Erstmal würde ich gerne die datei "index.php" nicht anzeigen lassen...
(ich denke ich müsste einfach angeben das ich nur xvid und avi anzeigen lasse aber weis nicht wie.. *heul*)

Das bedeutet, dass Du Dateien mit einer bestimmten Endung gerade _nicht_ anzeigen lassen willst. Dazu kannst Du den "Filter" in Deinem Code etwas erweitern.

if($file != "." && $file != "..") {

Hier "filterst" Du zwei Verzeichniseinträge heraus. Warum solltest Du hier nicht weitere Dinge herausfiltern?

Entweder Du entscheidest Dich dafür, explizit anzugeben, was angezeigt werden darf (sozusagen eine "Whitelist"), oder Du entscheidest, was gerade nicht angezeigt werden darf (also eine Art "Blacklist").

Ich nehme an, dass Du nur .avi und .xvid -Dateien anzeigen lassen willst, oder? Damit könnte man eine Art Whitelist erstellen, indem die Datei eben diese Endung haben muss. Das könnte so gehen:

if (is_dir($file) || preg_match('~(?i)\.(avi|xvid)$~', $file)) {

Diese Zeile ist anstelle der oben zitierten Zeile zu verwenden. Sie erlaubt nur Verzeichnisse, oder Dateien mit der passenden Endung.

Kann ich da irgentwie "emblems" also kleine Bilder nebenbei anzeigen lassen?

Das ist kein Problem. Du hast als Ausgabe diese zwei Zeilen

echo "/".$file."<br/>";

bzw.

echo "<a href="".$compl."">".$file."</a><br/>";

Bei der ersten Zeile handelt es sich offenbar um ein Verzeichnis. Hier willst Du vielleicht ein Ordner-Symbol voransetzen? Nachdem, wie Dein Script gestrickt ist, ist das Ausgeben eines <img>-Elementes an dieser Stelle am sinnvollsten.

echo '<img src="./pfad/zu/ordnersymbol.gif" alt="Verzeichnis" />/'.$file.'<br/>';

Für Dateien passt das auch. Das geht so:

echo '<a href="'.$compl.'"><img src="./pfad/zu/multimediadateisymbol.gif" alt="Filmdatei" />/'.$file.'</a><br/>';

ein name sieht ungefähr so aus:
[E].All.the.Boys.love.Mary.Lane.avi
Kann ich das auch so anzeigen lassen:
All the Boys Love Mary Lane

Dazu müsstest Du eine String-Ersetzung vornehmen, die alle Punkte aus dem String durch ein Leerzeichen ersetzt. Wie ist das allerdings mit dem Punkt und der Dateiendung (.avi oder .xvid)? Soll der mitsamt der Endung verschwinden, oder aber bleiben? Ich entferne ihn in folgendem Beispiel:

            $filename = preg_replace('~\.(avi|xvid)$~', '', $file); // Dateiendung weg  
            $filename = str_replace('.', ' ', $filename); // Punkte ersetzen  
            echo '<a href="'.$compl.'"><img src="./pfad/zu/multimediadateisymbol.gif" alt="Verzechnis" />/'.$filename.'</a><br/>';

Hilft Dir das irgendwie weiter?

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)