簡體   English   中英

php目錄讀取問題

[英]php directory reading issue

我已經編寫了這個簡單的腳本,將目錄中的所有文件顯示為一組按鈕。

這段代碼從上載目錄中讀取,並在表單中的“提交”按鈕中顯示所有文件。

$handle = opendir("upload");
echo '<form name="form" method="post" action="download.php">';
while($name = readdir($handle)) {
  echo '<input type="submit" name="file" value='.$name.' />';
}
echo '</form>';

現在的問題是; 每次我運行腳本時,都會在內容的開頭找到兩個按鈕. ..

我一直無法弄清楚是什么原因導致了這個問題。

您遇到的是文件系統使用的兩個特殊文件。

  • . 代表您當前所在的目錄。1

  • ..表示當前目錄的父目錄。 2

腳注:
1.諸如“ /my_dir/././././././file”之類的路徑等效於“ / my_dir / file”
2.諸如“ /my_dir/../my_dir/../my_dir/file”之類的路徑等效於“ / my_dir / file”,因為..將使您向上移動“一級”。


要解決向用戶顯示這兩個問題,請使用以下內容過濾readdir返回的內容:

while  ($name = readdir ($handle)) {
  if ($name == '.' || $name == '..')
    continue; /* don't echo anything, skip to next read */

   echo '<input type="submit" name="file" value='.$name.' />';
}

目錄清單包括。 對於當前目錄,對於父目錄,..

我通常使用從PHP手冊(http://php.net/manual/en/function.readdir.php)中獲得的代碼

if ($handle = opendir('.')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "$entry\n";
        }
    }
    closedir($handle);
}

因此,您需要做的是排除。 和..從輸出。

另一種解決方案是使用像這樣的FilesystemIterator:

foreach(new FilesystemIterator('upload') as $file){
    echo $file;
}

它將自動跳過。 和..條目在文件系統中。

暫無
暫無

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

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