我有一个脚本文件。列出目录中的文件和文件夹..我想隐藏某些文件和文件夹。我怎么做?
<?php
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle)))
{
if (($file != ".")
&& ($file != ".."))
{
$thelist .= '<LI><a href="'.$file.'">'.$file.'</a>';
}
}
closedir($handle);
}
?>
<P>List of files:</p>
<UL>
<P><?=$thelist?></p>
</UL>
答案 0 :(得分:0)
将要排除的文件名列表放在数组中。
之后,在将文件名exists in the array添加到$thelist
之前检查文件名是否为{{3}}。
您可以将其添加为if()
语句的一部分,以检查文件名是.
还是..
。
答案 1 :(得分:0)
<?php
$files_to_hide = array('file1.txt', 'file2.txt');
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle)))
{
if (($file != ".") && ($file != "..") && !in_array($file, $files_to_hide))
{
$thelist .= '<LI><a href="'.$file.'">'.$file.'</a>';
}
}
closedir($handle);
}
?>
<P>List of files:</p>
<UL>
<P><?=$thelist?></p>
</UL>
答案 2 :(得分:0)
这样的事情:
<?php
$bannedFiles = Array(".", "..", "example");
if ($handle = opendir('.')){
while (false !== ($file = readdir($handle)))
{
$banned = false;
foreach ($bannedFiles as $bFile){
if ($bFile == $file){
$banned = true;
}
}
if (!$banned){
$thelist .= '<LI><a href="'.$file.'">'.$file.'</a></LI>';
}
}
closedir($handle);
}
?>
<P>List of files:</p>
<UL>
<P><? echo $thelist;?></p>
</UL>
答案 3 :(得分:0)
如果你知道要隐藏的文件/目录的名称,你可以维护这些条目的集合图,并在while循环中过滤掉它们。
你的set-map看起来像这样:
$items_to_hide = [ "/home/me/top_secret" => 1, "/home/me/passwords.txt" => 1, ... ]
然后你会像这样修改你的while循环:
while (false !== ($file = readdir($handle)))
{
// check map if said file is supposed to be hidden, if so skip current loop iteration
if($items_to_hide[$file]) {
continue;
}
if (($file != ".")
&& ($file != ".."))
{
$thelist .= '<LI><a href="'.$file.'">'.$file.'</a>';
}
}
希望这有帮助。
编辑:
还想提一下,使用php有序数组作为你的&#34;黑名单&#34;非常有效,因为单个查找将在几乎恒定的时间内发生。因此,您可以根据需要增加黑名单,并且仍然可以看到不错的表现。