Einzelnen Beitrag anzeigen

fwsp
(Gast)

n/a Beiträge
 
#1

[PHP] Dir-Listing Problem

  Alt 14. Feb 2006, 17:48
hallo
ich hab die listing-skripte von luckie bekommen. und bin grad dabei die anzupassen, allerdings krieg ich es nicht hin, dass unterverzeichnisse angezeigt werden. ich bin nicht so fit in php, vielleicht kann mir jemand helfen

das problem könnt ihr euch angucken wenn ihr auf fwsp.net geht, und dann auf verzeichnisse, und es ist definitiv ein unterverzeichnis da.


die datei die aufgerufen wird, mit dem verzeichnis als parameter
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <?php
    echo "<title>fwsp.net/$folder</title>";
  ?>
  <link rel="stylesheet" type="text/css" href="css/format.css">
  <link rel="stylesheet" type="text/css" href="css/dir.css">

</head>
<body>
  <div>
  <?php
    include $_SERVER['DOCUMENT_ROOT'].'/php/dirhelpers.php';
    echo '<h2>Inhalt von '.$folder.'</h2>';
  ?>
 



    <?php
      if (!file_exists($folder))
      {
        echo "No such file or directory!";
        echo "<hr>\n";
        echo "<table>\n";
        echo "<tr>\n";
        echo "<td></td>";
        echo "<td>'$cr'</td>";
        echo "</tr>\n";
        echo "</table>\n";
        echo "</div>\n";
        exit;
      }
      echo "<hr>\n";
      echo "<div class='right'>Letzte Veränderung: ".date("Y-m-d H:i", filemtime($folder.newestfile($folder)))."</div>";
    ?>
  </p>

  <table>
  <colgroup>
    <col width="200" class="left">
    <col width="100" class="right">
    <col width="360" class="left">
  </colgroup>
  <?php
    $s = explode('/',$folder);
    array_pop($s);
    array_pop($s);

    $prefolder = implode('/', $s);
    if ($prefolder == '')
    {
      $prefolder = '';
    }
    else
    {
      $prefolder = 'dirindex.php?folder='.$prefolder;
    }

    echo '<tr>';
    echo '<th class="left">[url="dirindex.php?folder='.$folder.$dir.'&SortOrder=time"]Letzte Veränderung[/url]</th>
          <th class="left">[url="dirindex.php?folder='.$folder.$dir.'&SortOrder=size"]Größe[/url]</th>
          <th class="left">[url="dirindex.php?folder='.$folder.$dir.'&SortOrder=name"]Name[/url]</th>';
    echo '</tr>';

    echo '<tr>';
    echo '<td></td>
          <td>&lt;PDir&gt;</td>
          <td>[img]image/dir_default.png[/img]
          [url="'.$prefolder.'/"][.........][/url]</td>';
    echo '</tr>';

    /*if (!strpos($folder, '.'))*/

    $dirs = ListDirs($folder);
    foreach($dirs as $dir)
    {
      echo '<tr>';
      echo '<td>'.date("Y-m-d H:i", filemtime($folder.$dir)).'</td>
            <td>&lt;DIR&gt;</td>
            <td>[img]image/dir_folder.png[/img]
            [url="dirindex.php?folder='.$folder.$dir.'/"]['.$dir.'][/url]</td>';
      echo '</tr>';
    }


    if ($SortOrder == '')
    {
      $SortOrder = 'name';
    }

    $files = ListFiles($folder, $SortOrder);
    foreach($files as $file)
    {
      $title = GetTitleFromHTML($folder.$file);
      if ($title == '')
      {
        $title = $file;
      }
      echo '<tr>';
      echo '<td>'.date("Y-m-d H:i", filemtime($folder.$file)).'</td>
            <td>'.format_filesize(filesize($folder.$file)).'</td>
            <td>[img]'.PickImage($folder.$file).'[/img]
            [url="/'.$folder.$file.'"]'.$title.'[/url]</td>';
      echo '</tr>';
    }
  ?>

  </table>
  <hr>
  <table>
    <tr>
    <?php
      echo '<td">Ordner: '.count($dirs).' Dateien: '.count($files).'  ~ '.format_filesize(directory_size($folder)).'</td></tr>';
      echo '<tr><td class="small">PHP-Listing &copy; Michael Puff</td>';
    ?>
    </tr>
  </table>
  </div>

</body>
</html>
und die datei in der die funktionen drin sind
Code:
<?php
/*
  Copyright (c) 2005: Michael Puff
  Url: [url]http://www.luckie-online.de[/url]
  Mail: [email]mpuff@luckie-online.de[/email]

  Version: 2.0 - 2005-11-06
*/

//
// Returns the lates file from a given directory
//
function newestfile($folder,$number=0)//$folder endet auf \ oder /
{
  $Docs=Array();
  $handle=opendir($folder);
  $Doccount=0;
  while (false !== ($file = readdir ($handle)))
  {
    if ($file[0] != "." && $file != 'index.php')
    {
      $Docs[$Doccount]=$file;
      $Time[$Doccount]=filemtime($folder.$Docs[$Doccount]);
      $Doccount++;
    }
  }
  closedir($handle);
  array_multisort($Time,SORT_DESC,$Docs);
  return $Docs[$number];
}

//
// Returns the title of a given HTML-file
//
function GetTitleFromHTML($htmlfile)
{
  $content = file_get_contents($htmlfile);
  $start = strpos(strtolower($content),"<title>");
  $end = strpos(strtolower($content),"</title>");
  if (($start !== false) and ($end !== false))
   return substr($content,$start+7,$end-$start-7);
  else
   return "";
}

//
// Returns the size in bytes of a given directory
//
function directory_size($nomrep){
   $dossier = @opendir($nomrep);
   $file_size_up = 0;
   while ($Fichier = @readdir($dossier)){
       if ($Fichier != "." && $Fichier != ".."){
           if ($Fichier){
               $file_size_up += filesize($nomrep."/".$Fichier);
           }
       }
   }
   @closedir($dossier);
   return $file_size_up;
}

//
// Formats the filesize in a more readable format
//
function format_filesize( $filesize )
{
   $filesize = (int)$filesize;
   $units = array('Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
   $tot_units = (count($units) - 1);

   $pass = 0; // set zero, for Bytes
   while( $filesize >= 1024 && $pass < $tot_units )
   {
       $filesize /= 1024;
       $pass++;
   }

   return round($filesize, 2) .''. $units[$pass];
}

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

  while(false !== ($s = readdir($handle)))
  {
    if (is_dir($s) && ($s[0] != '.'))
    {
      $dirs[$count] = $s;
      $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($dir.'/'.$file) && ($file != 'index.php'))
    {
      $files[$count] = $file;
      $Time[$count]=filemtime($dir.'/'.$file);
      $Size[$count]=filesize($dir.'/'.$file);
      $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;
}


function PickImage($Filename)
{
  $s = pathinfo($Filename);
  $ext = $s["extension"];
  switch ($ext)
  {

    case "pdf": return "image/dir_pdf.png"; break;
    case "zip": return "image/dir_zip.png"; break;
    case "exe": return "image/dir_exe.png"; break;
    default:   return "image/dir_default.png"; break;
  }
    }
?>
mfg
fwsp

[edit=alcaeus]delphi- durch code-Tags ersetzt. Mfg, alcaeus[/edit]
  Mit Zitat antworten Zitat