PHP列表文件异常

PHP列表文件异常,php,readdir,opendir,Php,Readdir,Opendir,我制作了一个PHP页面,其中显示了一个文件夹中的文件列表。现在我不希望有人直接访问这个文件夹,我计划添加一个PHP脚本,重定向到index.PHP。我只是不希望此文件出现在列表中 我可以只向该扩展添加例外吗?还有更好的主意吗 if ($handle = opendir('manual')) { while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry !=

我制作了一个PHP页面,其中显示了一个文件夹中的文件列表。现在我不希望有人直接访问这个文件夹,我计划添加一个PHP脚本,重定向到index.PHP。我只是不希望此文件出现在列表中

我可以只向该扩展添加例外吗?还有更好的主意吗

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

如果不希望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);
}

您可以简单地使用一个标志变量来标识访问者的状态,如果没有该变量,就让他重定向。通常我们使用session全局变量来完成工作

您可以在手动文件夹中添加.htaccess规则,这将阻止对该目录的访问-但是,您的所有链接以及上述代码输出将被破坏。在这种情况下,不要引用“manual/$entry”,而是调用另一个文件,如foo.php?file=$entry,foo.php负责获取$entry的内容。总体来说,这真的很草率。当然可以,但我可以像阻止所有.php文件出现一样吗?你可以使用preg_匹配,或者查看以获取扩展名并进行比较。是的,你可以使用preg_匹配。我已相应地编辑了我的答案。
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);
}