Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

[PHP] DirectoryListings Part 2

  Alt 24. Okt 2005, 00:08
Folgendes Problem: Ich habe vor ein kleines WebFTP Script u schreiben. Dabei habe ich mir gedacht, dass oben immer ein DirectoryListing erscheint, so wie hier: http://www.luckie-online.de/Ablage/. OK, soweit kein Problem. Jetzt dachte ich mir, wen ich in ein Verzeichnis wechseln will, dass sich die Datein selber aufruft mit dem Pfad als Parameter: index.php?path=css. Die index.php sieht jetzt so aus:
Code:
<html>
<head>
  <title>LittleWebFTP</title>
  <link rel="stylesheet" type="text/css" href="css/webftp.css">
</head>
<body>
  <h1>LittleWebFTP</h1>
 



  <?php
    $path = getcwd().'/'.$path;
    echo '[b]Contents of[/b] '.$path;
  ?>
  </p>
  [img]images/line.png[/img]
  <table class="dir">
  <colgroup>
    <col width="150" align="left">
    <col width="75" align="right">
    <col width="675" align="left">
    </colgroup>
  <?php
    include 'php/webftp.php';

    echo '<tr>';
    echo '<th class="dir">[url="index.php?SortOrder=time"]Last modified[/url]</th>
      <th class="dir"><a class="parent" href="index.php?SortOrder=size">Size</th>
      <th class="dir">[url="index.php?SortOrder=name"]Name[/url]</th>';
    echo '</tr>';
    echo $path;
    $dirs = ListDirs($path);
    foreach($dirs as $dir)
    {
      echo '<tr>';
      echo '<td class="dir">'.date("Y-m-d H:i", filemtime($dir)).'</td>
        <td class="dir">&lt;DIR&gt;</td>
      <td class="dir">[url="index.php?path='.$dir.'"]['.$dir.'][/url]</td>';
      echo '</tr>';
    }
    ?>
    </table>

    <table class="files">
    <colgroup>
      <col width="150" align="left">
      <col width="75" align="right">
      <col width="675" align="left">
    </colgroup>
    <?php
    if ($SortOrder == '')
    {
      $SortOrder = 'name';
    }
    echo $path;
    $files = ListFiles($path, $SortOrder);
    foreach($files as $file)
    {
      echo '<tr>';
      echo '<td class="files">'.date("Y-m-d H:i", filemtime($file)).'</td>
        <td class="files">'.format_filesize(filesize($file)).'</td>
        <td class="files">[url="'.$file.'"]'.$file.'[/url]</td>';
      echo '</tr>';
    }
  ?>
  </table>
  [img]images/line.png[/img]
  <table class="tblfooter">
    <tr>
    <?php
      echo '<td class="total">'.'Total: '.count($files).' file(s) - '.count($dirs).' directory(s) ~'.format_filesize(directory_size($path)).'</td>'.
        '<td></td>';
    ?>
    </tr>
  </table>
  </p>
</body>
</html>
Und die beiden relevaten Funktionen ListDirs und ListFiles

Code:
//
// Returns the sub-directories of a given directory
//
function ListDirs($dir)
{
  $dirs=Array();
  $handle=opendir($dir);
  $count=0;

  while(false !== ($file = readdir($handle)))
  {
    if (is_dir($file) /*&& ($file != '.')*/)
    {
      $dirs[$count] = $file;
      $count++;
    }
  }
  closedir($handle);
  array_multisort($dirs, SORT_ASC, $dirs);
  return $dirs;


//
//  Returns the files in a given directory
//  Valid values for $SortOrder: name, time, size
//
function ListFiles($dir, $SortOrder)
{
  $files=Array();
  $handle=opendir($dir);
  $count=0;

  while(false !== ($file = readdir($handle)))
  {
    if (is_file($file))
    {
      $files[$count] = $file;
      $Time[$count]=filemtime($files[$count]);
      $Size[$count]=filesize($files[$count]);
      $count++;
    }
  }
  closedir($handle);
  if ($SortOrder == 'name')
  {
    array_multisort($files, SORT_ASC, $files);
  }
  elseif ($SortOrder == 'time')
  {
    array_multisort($Time, SORT_DESC, $files);
  }
  elseif ($SortOrder == 'size')
  {
    array_multisort($Size, SORT_ASC, $files);
  }

  return $files;
}
Das haut aber irgendwie nicht so ganz hin. Wenn ich auf einen Ordner klicke dann gibt mir das
Code:
$path = getcwd().'/'.$path;
    echo '[b]Contents of[/b] '.$path;
folgenden Pfad aus (zum Beispiel): /var/www/l3s11195/html/Ablage/Privat/LittleWebFTP/css aber alles was passiert ist, dass aus dem Listing alle Verzeichnisse bis auf [.] und [..] und Dateien verschwinden. Seit acht Uhr doktere ich da nun schon dran rum und bin kein Stückchen weitergekommen. Wo ist mein Denkfehler? Was mache ich falsch? Oder packe ich es prinzipiell falsch an?

Zum Ausprobieren alles noch mal im Anhang.
Angehängte Dateien
Dateityp: zip littlewebftp_160.zip (2,8 KB, 3x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat