2016-10-14 3 views
0

Ich erstelle eine Seite, auf die ich Dateien hochladen kann, und zeige sie dem Benutzer auf einer übersichtlichen Webseite an. Ich verwende den folgenden Code, um die gewünschten Ergebnisse zu erhalten. Alles funktioniert gut, aber ich möchte nicht die index.php Datei in der Liste anzeigen. Wie bekomme ich es, dies zu verbergen?PHP-Dateien im Ordnerverzeichnis ausblenden

<!doctype html> 
<html> 

<head> 
    <meta charset="UTF-8"> 
    <title>Chase Andrews Show - Promos</title> 
    <link rel="stylesheet" href="/common/dir-style.css"> 
    <script src="/common/sorttable.js"></script> 
</head> 

<body> 

    <div id="container"> 

    <h1>Chase Andrews Show - Promos</h1> 

    <table class="sortable"> 
     <thead> 
     <tr> 
      <th>Filename</th> 
      <th>Type</th> 
      <th>Size <small>(bytes)</small></th> 
      <th>Date Modified</th> 
     </tr> 
     </thead> 
     <tbody> 
     <?php 
     // Opens directory 
     $myDirectory=opendir("."); 

     // Gets each entry 
     while($entryName=readdir($myDirectory)) { 
      $dirArray[]=$entryName; 
     } 

     // Finds extensions of files 
     function findexts ($filename) { 
      $filename=strtolower($filename); 
      $exts=split("[/\\.]", $filename); 
      $n=count($exts)-1; 
      $exts=$exts[$n]; 
      return $exts; 
     } 

     // Closes directory 
     closedir($myDirectory); 

     // Counts elements in array 
     $indexCount=count($dirArray); 

     // Sorts files 
     sort($dirArray); 

     // Loops through the array of files 
     for($index=0; $index < $indexCount; $index++) { 

      // Allows ./?hidden to show hidden files 
      if($_SERVER['QUERY_STRING']=="hidden") 
      {$hide=""; 
      $ahref="./"; 
      $atext="Hide";} 
      else 
      {$hide="."; 
      $ahref="./?hidden"; 
      $atext="Show";} 
      if(substr("$dirArray[$index]", 0, 1) != $hide) { 

      // Gets File Names 
      $name=$dirArray[$index]; 
      $namehref=$dirArray[$index]; 

      // Gets Extensions 
      $extn=findexts($dirArray[$index]); 

      // Gets file size 
      $size=number_format(filesize($dirArray[$index])); 

      // Gets Date Modified Data 
      $modtime=date("M j Y g:i A", filemtime($dirArray[$index])); 
      $timekey=date("YmdHis", filemtime($dirArray[$index])); 

      // Prettifies File Types, add more to suit your needs. 
      switch ($extn){ 
      case "png": $extn="PNG Image"; break; 
      case "jpg": $extn="JPEG Image"; break; 
      case "svg": $extn="SVG Image"; break; 
      case "gif": $extn="GIF Image"; break; 
      case "ico": $extn="Windows Icon"; break; 

      case "txt": $extn="Text File"; break; 
      case "log": $extn="Log File"; break; 
      case "htm": $extn="HTML File"; break; 
      case "php": $extn="PHP Script"; break; 
      case "js": $extn="Javascript"; break; 
      case "css": $extn="Stylesheet"; break; 
      case "pdf": $extn="PDF Document"; break; 

      case "zip": $extn="ZIP Archive"; break; 
      case "bak": $extn="Backup File"; break; 

      default: $extn=strtoupper($extn)." File"; break; 
      } 

      // Separates directories 
      if(is_dir($dirArray[$index])) { 
      $extn="&lt;Directory&gt;"; 
      $size="&lt;Directory&gt;"; 
      $class="dir"; 
      } else { 
      $class="file"; 
      } 

      // Cleans up . and .. directories 
      if($name=="."){$name=". (Current Directory)"; $extn="&lt;System Dir&gt;";} 
      if($name==".."){$name=".. (Parent Directory)"; $extn="&lt;System Dir&gt;";} 

      // Print 'em 
      print(" 
      <tr class='$class'> 
      <td><a href='./$namehref'>$name</a></td> 
      <td><a href='./$namehref'>$extn</a></td> 
      <td><a href='./$namehref'>$size</a></td> 
      <td sorttable_customkey='$timekey'><a href='./$namehref'>$modtime</a></td> 
      </tr>"); 
      } 
     } 
     ?> 
     </tbody> 
    </table> 

    <h2><?php print("<a href='$ahref'>$atext hidden files</a>"); ?></h2> 

    </div> 

</body> 

</html> 

Antwort

1

Fügen Sie es einfach nicht zu Ihrem Array hinzu. Ändern

// Gets each entry 
    while($entryName=readdir($myDirectory)) { 
     $dirArray[]=$entryName; 
    } 

Um

// Gets each entry 
    while($entryName=readdir($myDirectory)) { 
     if ('index.php' !== $entryName) { 
     $dirArray[]=$entryName; 
     } 
    } 

Beachten Sie auch, wie in the documentation erläutert, ist Ihre Schleife falsch. Aus der Dokumentation:

Bitte beachten Sie die Art und Weise, wie der Rückgabewert von readdir() in den folgenden Beispielen überprüft wird. Wir testen explizit, ob der Rückgabewert identisch ist mit (gleich und vom selben Typ wie - siehe Vergleichsoperatoren für weitere Informationen) FALSE, da sonst jeder Verzeichniseintrag, dessen Name FALSE ergibt, die Schleife stoppt (zB ein Verzeichnis mit dem Namen "0").

Also, wirklich, sollten Sie Ihre Schleife:

// Gets each entry 
    while(false !== ($entryName=readdir($myDirectory))) { 
     if ('index.php' !== $entryName) { 
     $dirArray[]=$entryName; 
     } 
    } 
0

Wenn ich es richtig, den Code und Frage verstanden. Sie sollten nur in der Lage sein, eine if-Anweisung in Ihrer while zu haben, um jede Datei mit dem Namen "index.php" zu überspringen.

Verwandte Themen