AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] DirectoryListings Part 2

Ein Thema von Luckie · begonnen am 24. Okt 2005 · letzter Beitrag vom 29. Okt 2005
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz