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
 
Start new topic
Odpowiedzi
marlowe
post
Post #2





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

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


Myślę, że to Ci będzie odpowiadać:
  1. <?php
  2. $nazwa_pliku = &#092;"dir.php\"; //nazwa tego pliku
  3. function listDir($dir)
  4. {
  5. chdir($dir);
  6. $dir = getcwd();
  7. $fd = opendir($dir);
  8. if(!$fd) return false;
  9. while (($file = readdir($fd)) !== false){
  10.  if($file == &#092;".\") continue;
  11.  if(is_dir($dir.&#092;"\".$file))
  12.  {
  13. $link = &#092;"<a href=\"http://127.0.0.1:80/$nazwa_pliku.php?\";
  14. $link .= &#092;"dir=\".$dir.\"\".$file.\"\">\".$file.\"</A>\";
  15. $link = str_replace(&#092;"\", \"\", $link);
  16. echo(&#092;"$link\");
  17.  }
  18.  else
  19. {
  20. echo(&#092;"$file\");
  21.  }
  22.  echo(&#092;"<BR>\");
  23. }
  24. closedir($fd);
  25. }
  26. @$dir = $_GET['dir'];
  27. if($dir == '') $dir = &#092;".\";
  28. listDir($dir);
  29. ?>

Pozdrawiam.
Bartek
PS Forum zamieniło mi ! na &#33; i \ na &#092; - popraw to sobie.

Ten post edytował marlowe 18.07.2004, 22:51:21
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 09:10