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
a79rtur
post
Post #2





Grupa: Zarejestrowani
Postów: 331
Pomógł: 1
Dołączył: 23.05.2004
Skąd: Tarnów/Londyn

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


powyższy skrypt "poszedł" mi, na podanej w sygnaturce konfiguracji po drobnych przeróbkach:

  1. <?php
  2. $nazwa_pliku = substr($PHP_SELF,1); //nazwa tego pliku
  3. function listDir($dir)
  4. {
  5. global $nazwa_pliku;
  6. chdir($dir);
  7. $dir = getcwd();
  8. $fd = opendir($dir);
  9. if(!$fd) return false;
  10. while (($file = readdir($fd)) != false){
  11.  if($file == &#092;".\") continue;
  12.  if(is_dir($dir.&#092;"\".$file))
  13.  {
  14. $link = &#092;"<a href=\"http://127.0.0.1:80/\".$nazwa_pliku.\"?\";
  15. $link .= &#092;"dir=\".$dir.\"\".$file.\"\">\".$file.\"</A>\";
  16. $link = str_replace(&#092;"\", \"\", $link);
  17. echo (&#092;"$link\");
  18.  }
  19.  else
  20. {
  21. echo(&#092;"$file\");
  22.  }
  23.  echo(&#092;"<BR>\");
  24. }
  25. closedir($fd);
  26. }
  27. @$dir = $_GET['dir'];
  28. if($dir == '') $dir = &#092;".\";
  29. listDir($dir);
  30. ?>
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: 11.10.2025 - 15:07