簡體   English   中英

如何從目錄中的列表隱藏文件

[英]How to hide file from list in directory

我有一個腳本文件。 列出目錄中的文件和文件夾。我想隱藏某些文件和文件夾。 我怎么做?

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

將要排除的文件名列表放入數組中。

之后,檢查文件名是否存在於數組中,然后再將其添加到$thelist

您可以將其添加為if()語句的一部分,該語句檢查文件名是否為. ..

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

像這樣:

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

如果知道要隱藏的文件/目錄的名稱,則可以維護此類條目的set-map,並在while循環中將其過濾掉。

您的設置圖如下所示:

$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有序數組用作“黑名單”是非常有效的,因為單個查找將在幾乎恆定的時間內發生。 因此,您可以將黑名單擴大到所需的大小,並且仍然可以看到不錯的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM