使用浏览器显示文件夹中的文件列表

问题描述:

通常,如果没有启用htacces限制,可以使用浏览器查看托管在Web服务器中的文件夹下的文件列表。除非有像index.php这样的索引文件,它会自动进入索引页面。 (据我所知)使用浏览器显示文件夹中的文件列表

但是有可能看到虽然存在索引文件的文件列表?

在此先感谢

+0

如果你会写你的动机是什么,我认为这将是更清楚你问什么;) – hakre 2012-01-07 19:33:42

+0

我有一些与index.php文件一起在文件夹中的图像,我需要看到这些图像的列表,而无需从index.php文件访问 – fean 2012-01-07 20:06:17

+0

然后制作另一个文件并使用下面的代码指向该目录。仍然适合您的需求。你可以使用if语句来查明它们是否是图像,或者不显示它们。 – James 2012-01-07 20:14:35

不,没有。我知道的所有网络服务器只会在没有可用索引页的情况下显示目录列表(即使这样,只有在目录列表未被禁用的情况下)也是如此。

+0

是否可以停止从客户端索引文件的执行? – fean 2012-01-07 18:54:54

+3

不会。这将被视为安全漏洞。 – duskwuff 2012-01-07 18:56:08

在PHP中构建文件列表并将其显示在索引文件中。

查看http://php.net/manual/en/function.readdir.php的相关信息。我用这个为客户端通过index.php文件显示目录中的某些文件类型。

<?php 

if ($handle = opendir('/path/to/files')) { 
    echo "Directory handle: $handle\n"; 
    echo "Entries:\n"; 

    while (false !== ($entry = readdir($handle))) { 
     echo "$entry\n"; 
    } 

    closedir($handle); 
} 
?> 

将这个在Web根目录中的sindex.php

<?php 
$pngFolder = <<< EOFILE 
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAABhlBMVEX//v7//v3///7//fr//fj+/v3//fb+/fT+/Pf//PX+/Pb+/PP+/PL+/PH+/PD+++/+++7++u/9+vL9+vH79+r79+n79uj89tj89Nf889D88sj78sz78sr58N3u7u7u7ev777j67bL67Kv46sHt6uP26cns6d356aP56aD56Jv45pT45pP45ZD45I324av344r344T14J734oT34YD13pD24Hv03af13pP233X025303JL23nX23nHz2pX23Gvn2a7122fz2I3122T12mLz14Xv1JPy1YD12Vz02Fvy1H7v04T011Py03j011b01k7v0n/x0nHz1Ejv0Hnuz3Xx0Gvz00buzofz00Pxz2juz3Hy0TrmznzmzoHy0Djqy2vtymnxzS3xzi/kyG3jyG7wyyXkwJjpwHLiw2Liw2HhwmDdvlXevVPduVThsX7btDrbsj/gq3DbsDzbrT7brDvaqzjapjrbpTraojnboTrbmzrbmjrbl0Tbljrakz3ajzzZjTfZijLZiTJdVmhqAAAAgnRSTlP///////////////////////////////////////8A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9XzUpQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAACqSURBVBiVY5BDAwxECGRlpgNBtpoKCMjLM8jnsYKASFJycnJ0tD1QRT6HromhHj8YMOcABYqEzc3d4uO9vIKCIkULgQIlYq5haao8YMBUDBQoZWIBAnFtAwsHD4kyoEA5l5SCkqa+qZ27X7hkBVCgUkhRXcvI2sk3MCpRugooUCOooWNs4+wdGpuQIlMDFKiWNbO0dXTx9AwICVGuBQqkFtQ1wEB9LhGeAwDSdzMEmZfC0wAAAABJRU5ErkJggg== 
EOFILE; 

if (isset($_GET['img'])) 
{ 
     header("Content-type: image/png"); 
     echo base64_decode($pngFolder); 
     exit(); 
} 


$projectsListIgnore = array ('.','..'); 
$handle=opendir("."); 
$projectContents = ''; 
while ($file = readdir($handle)) 
{ 
    if (is_dir($file) && !in_array($file,$projectsListIgnore)) 
    {  
     $projectContents .= '<li><a href="'.$file.'">'.$file.'</a></li>'; 
    } 
} 
closedir($handle); 

?> 
<ul class="projects"> 
<?php $projectContents ?> 
</ul>