2017-01-06 9 views
0

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

Могу ли я добавить исключение только к этому расширению? или любая лучшая идея для этого?

if ($handle = opendir('manual')) { 
    while (false !== ($entry = readdir($handle))) { 
      if ($entry != "." && $entry != "..") { 
       echo "<a href='manual/$entry' target='_blank'>$entry</><br>"; 
      } 
    } 
    closedir($handle); 
} 
+0

Вы можете добавить правило '.htaccess' в папку' manual', которая будет препятствовать доступу к этому каталогу, - но тогда все ваши ссылки выходят за пределы выходов кода , В этом случае вместо обращения к «manual/$ entry» вызовите другой файл, например 'foo.php? File = $ entry', который foo.php отвечает за получение содержимого' $ entry'. Это вообще неряшливо. –

ответ

1

Если вы не хотите, чтобы ваш файл index.php, который будет отображаться в этом списке, то просто использовать if заявление.

if ($handle = opendir('manual')) { 
    while (false !== ($entry = readdir($handle))) { 
      if ($entry != "." && $entry != "..") { 
       if($entry!='index.php') // Go ahead only if the file is not index.php 
        echo "<a href='manual/$entry' target='_blank'>$entry</a><br>"; 
      } 
    } 
    closedir($handle); 
} 

И, если вы хотите, чтобы скрыть все PHP файлы, то вы можете использовать preg_match:

if ($handle = opendir('manual')) { 
    while (false !== ($entry = readdir($handle))) { 
      if ($entry != "." && $entry != "..") { 
       if (!preg_match('/.php/', $entry)) // Go ahead only if the file is not having .php as it's extension 
        echo "<a href='manual/$entry' target='_blank'>$entry</a><br>"; 
      } 
    } 
    closedir($handle); 
} 
+0

уверен, что эта работа, но могу ли я просто запретить появление всего файла .php? –

+0

Вы можете использовать 'preg_match()' или посмотреть http://stackoverflow.com/questions/173868/how-to-extract-a-file-extension-in-php, чтобы получить расширение и сравнить его. – Barmar

+0

Да, вы можете использовать 'preg_match'. Я отредактировал свой ответ соответственно. – Nerazzurri

0

вы можете просто использовать переменную флаг, чтобы определить статус посетителя, если не имеет ни переменная, пусть он перенаправляет. Обычно мы используем сессию глобальную переменную для выполнения работы.