2016-10-14 3 views
0

Я создаю страницу, на которой я могу загружать файлы и показывать их пользователю на аккуратной веб-странице. Я использую следующий код, чтобы получить результаты, которые я хочу. Все работает отлично, но я не хочу показывать файл index.php в списке. Как я могу скрыть это?Скрыть файлы PHP в каталоге папок

<!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> 

ответ

1

Просто не добавляйте его в свой массив. Изменение

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

Для

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

Также обратите внимание, как описано в the documentation, ваш цикл является неправильным. Из документов:

Обратите внимание, что мода, в которой возвращаемое значение readdir() проверяется в приведенных ниже примерах. Мы явно проверяем, является ли возвращаемое значение идентичным (равным и того же типа, что и - см. «Операторы сравнения» для получения дополнительной информации) FALSE, поскольку в противном случае любая запись в каталоге, имя которой оценивается как FALSE, остановит цикл (например, каталог с именем "0").

Таким образом, на самом деле, ваш цикл должен быть:

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

Если я правильно понял код и вопрос. Вам просто нужно иметь оператор if, чтобы пропустить любой файл с именем «index.php»

while($entryName=readdir($myDirectory)) { 
      if($entryName != 'index.php'){ 
      $dirArray[]=$entryName; 
      } 
     } 
Смежные вопросы