Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przechodzenie po katalogach, + listowanie
beskid
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.07.2004
Skąd: Gorlice - Kraków

Ostrzeżenie: (0%)
-----


Witam, przeglądnąłem forum, ale nie znalazłem nic, co kompleksowo rozwiązałoby mój problem. Otóż chcę napisać skrypt listujący zawartość katalogu, oraz jeśli zawiera on inne katalogi, aby umożliwiał "wejście" w niego i wylistowanie. Poniżej przedstawiam mój kod. Problem polega na tym że mimo że można "wejść" w podkatalogi, to zawarte w nim pliki są traktowane jako katalogi i np. nie liczy ich rozmiaru. Jeśli ktoś znalazłby błąd w skrypcie, albo jakąś sugestię to bardzo dziękuję.

  1. <?php
  2. if(empty($_GET[&#092;"path\"]))
  3.    $path=&#092;".\";
  4. else
  5.    $path=$_GET[&#092;"path\"];
  6.  
  7. $directory=@opendir($path) 
  8.    or die(&#092;"Cannot  open stream to directory <b>$directory</b>\");
  9.  
  10. $table=array();
  11. $table_dir=array();
  12.  
  13. while (gettype($file=readdir($directory))!=boolean) 
  14. {
  15.    if(is_file($file))
  16.       array_push($table,$file);
  17.    elseif($file!=&#092;".\")
  18.       array_push($table_dir,$file);
  19. }
  20.  
  21. sort($table);
  22. sort($table_dir);
  23.  
  24. foreach($table_dir as $value) 
  25. {
  26.    print &#092;"<a href=?path=$path/$value>\".$value.\"</a> --<br>\";
  27. }
  28. foreach($table as $value) 
  29. {
  30.    if(($rozmiar=filesize($value))>=1024*1024)
  31.      $rozmiar=round($rozmiar/(1024*1024)).&#092;" <b>M</b>\";
  32.    elseif($rozmiar>=1024)
  33.      $rozmiar=round(($rozmiar/1024)).&#092;" <b>k</b>\"; 
  34.  
  35.    print &#092;"<a href=$value>\".$value.\"</a> $rozmiar<br>\";
  36. }
  37. closedir($directory);
  38. ?>


Ten post edytował beskid 18.07.2004, 10:51:46
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 16:06