Wyświetlenie listy plików i katalogów w PHP
Poniższy kod źródłowy korzysta z algorytmu rekurencji . Szczegółowy opis algorytmu znajduje się w dziale Algorytmy. Poniższy skrypt umożliwia wyświetlenie wszystkich katalogów i plików znajdujących się w danej ścieżce. Uwaga!. Na Linuxie miałem pewne problemy z działaniem skryptu - otóż funkcja PHP is_dir() zwracała false nawet wówczas, gdy podany w parametrze URL był rzeczywiście folderem. Nie wiem więc jak to będzie działało na systemach z Windows.
<? // Adam Boduch // adam@boduch.net // http://4programmers.net $i = 0; /* tablica zawiera kod HTML, ktory wyswietli odpowiednia ikone oznaczajaca katalog lub plik */ $images['file'] = '<img src="templates/subMain/gfx/doc.gif"> '; $images['dir'] = '<img align="center" src="templates/subMain/gfx/folder.gif"> '; function show_dir($directory) { global $i, $images; $dir = opendir($directory); while ( $file = readdir($dir) ) { if ( $file != '.' && $file != '..' ) { if ( is_dir($directory.'/'.$file) ) { echo ( str_repeat(' ', $i * 2) . $images['dir'] . $file . '<br>' ); ++$i; show_dir($directory . '/' . $file); } else { echo ( str_repeat(' ', $i * 4) . $images['file'] . $file . '<br>' ); } } } closedir($dir); --$i; } show_dir('/home/www/coyote/coyote'); ?>
"Na Linuxie miałem pewne problemy z działaniem skryptu - otóż funkcja PHP is_dir() zwracała false nawet wówczas, gdy podany w parametrze URL był rzeczywiście folderem."
Ponieważ nie bierzesz pod uwagę możliwości, że plik(folder) może znajdować się w podkatalogu, tu jest moim zdaniem błąd, jest:
if ( is_dir($file) ) ,a powinno być:
if ( is_dir($directory .'/'.$file) )