Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ftp/php] lista katalogów
Forum PHP.pl > Forum > Gotowe rozwiązania
JOHNY
Ja w zasadzie z zapytańkiem bo mam typowy książkowy przykład na wyświetlenie listy katalogów z lokalnego servera i pytanie jest następujące czy da się to przerobić tak zamieniając tylko odpowiednio funkcje można było się poruszać między katalogami jak na lokalnym serwie questionmark.gif

  1. <? ob_start(); ?>
  2.  
  3. <?
  4. $default_dir = &#092;"images/big\";
  5.  
  6. function html_header() {
  7. ?>
  8. html nagłowka
  9. <?php
  10. }
  11. function html_footer() {
  12. ?>
  13. </body>
  14. </html>
  15. <?php
  16. }
  17. function error_message($msg) {
  18. html_header();
  19. echo &#092;"<script>alert(\"$msg\"); history.go(-1)</script>\";
  20. html_footer();
  21. }
  22. function mkdir_form() {
  23. global $show, $PHP_SELF, $dir;
  24. ?>
  25. <center>
  26. <form method=\"post\" action=\"<?php echo &#092;"$PHP_SELF?show=\".$show.\"&action=make_dir&dir=$dir\"; ?>\">
  27. <input type=\"hidden\" name=\"action\" value=\"make_dir\">
  28. <input type=\"hidden\" name=\"dir\" value=\"<? echo $dir; ?>\">
  29. <?php
  30. echo &#092;"<font class=\"tekst-bold\">$dir</font><br>\"
  31. ?>
  32. <br>
  33. <input type=\"text\" name=\"new_dir\" size=\"10\" class=\"pole\">
  34. <input type=\"submit\" value=\"Utwórz katalog\" name=\"Submit\" class=\"pole\">
  35. </form>
  36. <br>
  37. <font class=\"naglowek\">Przed przesłaniem pliku wybierz katalog !!!</font>
  38. </center>
  39. <?php
  40. }
  41. function upload_file_form() {
  42. global $show, $PHP_SELF, $dir;
  43. ?>
  44. <center>
  45. <form method=\"post\" enctype=\"multipart/form-data\" action=\"<?php echo &#092;"$PHP_SELF?show=\".$show.\"&action=upload_file\"; ?>\">
  46. <input type=\"hidden\" name=\"dir\" value=\"<? echo $dir; ?>\">
  47. <font class=\"naglowek\">Upload</font> <input type=\"file\" name=\"userfile\" class=\"pole\">
  48. <input type=\"submit\" value=\"Prze&para;lij plik\" class=\"pole\">
  49. </form>
  50. <?php echo &#092;"<font class=\"naglowek\">$dir_upload</font>\"; ?>
  51. </center>
  52. <?php
  53. }
  54. function make_dir() {
  55. global $show, $dir, $new_dir;
  56. if(!@mkdir(&#092;"$dir/$new_dir\", 0755)) {
  57. error_message (&#092;"Nie moge utworzyc katalogu $dir/$new_dir.\");
  58. }
  59. html_header();
  60. dir_page();
  61. html_footer();
  62. }
  63.  
  64. function upload_file() {
  65. global $show, $userfile, $PHP_SELF, $dir, $WINDIR;
  66. $temp_name = $_FILES['userfile']['tmp_name'];
  67. $im=@getimagesize($temp_name);
  68.  
  69. if(!isset($WINDIR)) $_FILES['userfile']['name'] = str_replace(&#092;"\",\"\", $_FILES['userfile']['name']);
  70. $_FILES['userfile']['name'] = str_replace(&#092;" \",\"_\", $_FILES['userfile']['name']);
  71. if(empty($_FILES['userfile']['name'])) {
  72. error_message(&#092;"Musisz załadować plik\");
  73. }
  74. if (($im[2]!=1) && ($im[2]!=2)) {
  75. error_message(&#092;"Dozwolone rozszerzenia jpg/gif.\");
  76. }
  77. $_FILES['userfile']['name'] = str_replace(&#092;" \",\"_\", $_FILES['userfile']['name']);
  78. if(file_exists(&#092;"$dir/\".$_FILES['userfile']['name'].\"\")) {
  79. error_message(&#092;"\".$_FILES['userfile']['name'].\" już istnieje. Zmień nazwę przesyłanego pliku.\");
  80. }
  81. if(!@copy($userfile, &#092;"$dir/\".$_FILES['userfile']['name'].\"\")) {
  82. error_message(&#092;"Nie mogę skopiować \".$_FILES['userfile']['name'].\".\");
  83. }
  84. if(!isset($WINDIR) && !@unlink($_FILES['userfile']['tmp_name'])) {
  85. error_message(&#092;"Nie mogę skasować \".$_FILES['userfile']['tmp_name'].\".\");
  86. }
  87. $dir_uploadb = &#092;"$dir/\".$_FILES['userfile']['name'].\"\";
  88.  
  89. echo &#092;"<center><font class=\"tekst\">Zauploadowano do, przekopiuj poniższ&plusmn; &para;cieżkę do Adres dużego screena:</font><br><font class=\"naglowek\">$dir_uploadb</font></center>\";
  90.  
  91. html_header();
  92. dir_page();
  93. html_footer();
  94. }
  95.  
  96. function dir_page() {
  97. global $show, $dir, $default_dir, $PHP_SELF, $default_filename;
  98.  
  99. if($dir == '') {
  100. $dir = $default_dir;
  101. }
  102. $dp = opendir($dir)
  103. ?>
  104. <table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">
  105. <?php
  106. while($file = readdir($dp)) $filenames[] = $file;
  107.  
  108. sort($filenames);
  109.  
  110. for($i = 0; $i < count($filenames); $i++)
  111. {
  112. $file = $filenames[$i];
  113. if($dir == $default_dir && ($file == &#092;".\" || $file == \"..\"))
  114. continue;
  115. if(is_dir(&#092;"$dir/$file\") && $file == \".\")
  116. continue;
  117. if(is_dir(&#092;"$dir/$file\")) {
  118. if($file == &#092;"..\") {
  119. $current_dir = basename($dir);
  120. $parent_dir = ereg_replace(&#092;"/$current_dir$\",\"\",$dir);
  121. echo &#092;"<tr><td><a href=\"$PHP_SELF?show=\".$show.\"&dir=$parent_dir\"><img src=\"admin/img/folder.gif\" border=0></a> <font class=\"naglowek\">$file</font></td></tr>n\";
  122. }
  123. else echo &#092;"<tr><td><a href=\"$PHP_SELF?show=\".$show.\"&dir=$dir/$file\"><img src=\"admin/img/folder.gif\" border=0></a> <font class=\"naglowek\">$file</font></td></tr>n\";
  124. }
  125. else echo &#092;"<tr><td><font class=\"tekst\">$file</font></td></tr>n\";
  126. }
  127. ?>
  128. </table>
  129. <?php
  130. mkdir_form();
  131. upload_file_form();
  132. }
  133. if(empty($dir) || !ereg($default_dir, $dir)) {
  134. $dir = $default_dir;
  135. }
  136. switch ($action) {
  137. case &#092;"make_dir\":
  138. make_dir();
  139. break;
  140. case &#092;"upload_file\":
  141. upload_file();
  142. break;
  143. default: 
  144. html_header();
  145. dir_page();
  146. html_footer();
  147. break;
  148. }
  149.  
  150. ?>
  151. <? ob_end_flush(); ?>


Chodzi głownie o to jak zrobić żeby jak mam np opendir($dir) falnąć ftp_ końcówka z manuala czy jest taka możliwość czy trzeba jakoś inaczej kod napisać questionmark.gif
Wave
On jest przeznaczony do czegoś innego, poszukaj w necie indexerów albo listerów które są o wiele prostrze.
JOHNY
No w tym problem że ciężko znaleść bo większość skryptów wyświetla tylko liste plików bez możliwość poruszania się w katalogach tak jak jest to w skrypcie co podałem. Ale dzięki myślałem że jest jakaś możliwość przerobienia tego.
Jak co to poszukam a jak nie zanjde to napisze jeszcze jak będe miał problem

W manualu jest jeszcze taki przykład ktoś go zamieścił ale nie działa dlaczego
  1. <?php
  2. function files($dir)
  3.  {
  4.  /*
  5.  if(!isset($dir) || empty($dir))
  6.  {
  7.  $dir=ftp_pwd($this->conn_id);
  8.  }
  9.  */
  10.  unset($list);
  11.  unset($files);
  12.  unset($folders);
  13.  unset($folder);
  14.  unset($file);
  15.  @ftp_chdir($this->conn_id, $dir);
  16.  $dir = ftp_pwd($this->conn_id);
  17.  $list=Array(); 
  18.  $list=ftp_nlist($this->conn_id, &#092;"$dir\"); 
  19.  $files = Array();
  20.  $folders = Array();
  21.  for($i = 0; $i != sizeof($list); $i++)
  22.  {
  23.  $entry = str_replace(&#092;"//\", \"\", $list[$i]);
  24.  if(@ftp_chdir($this->conn_id, $entry))
  25.  {
  26.  $folders[] = $entry;
  27.  ftp_chdir($this->conn_id, $dir);
  28.  }
  29.  else
  30.  {
  31.  $files[] = $entry;
  32.  }
  33.  }
  34.  print &#092;"t<b> Dateien in \".$dir.\" :</b><br><br>\";
  35.  foreach($files as $file)
  36.  {
  37.  print $file.&#092;"<br>\";
  38.  }
  39.  print &#092;"t<b>Ordner in \".$dir.\" :</b> <br><br>\";
  40.  foreach ($folders as $folder)
  41.  {
  42.  print &#092;"t\".$folder.\"<br>\";
  43.  ftp_chdir($this->conn_id, $dir);
  44.  $this->files($folder);
  45.  }
  46.  } 
  47. ?>
zefir
jeśli o wyświetlanie listy lokalnych katalogów to może sie przyda b. prosty przykładowy skrypcik :
  1. <a href=list.php>start</a>
  2. <?
  3. $n = (empty($d)) ? '/' : $d ;
  4. $open=opendir($n);
  5. while($dir = readdir($open))
  6. {
  7. echo &#092;"<li><a href=?d=$d/$dir>$dir</a></li>\";
  8. }
  9. closedir($open);
  10. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.