使用get方法傳遞一個值爲.(點)的參數,導致文件夾目錄消失。用if判斷值爲.後追加/可解決此問題。

<?php
$path='./';
if(isset($_GET['dir'])){
 $path=$path.$_GET['dir'];
}
$dh=opendir($path);
if($dh===false){
 echo '打開出錯';
 exit;
}
while(($item = readdir($dh))!==false){
 $list[]=$item;
}
print_r($list);
closedir($dh);
print_r($_SERVER);
?>
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title></title>
</head>
<body>
 <h1>文件管理系統</h1>
  <table>
   <tr>
    <td>序號</td>
    <td>文件名</td>
    <td>操作</td>
   </tr>
   <?php foreach ($list as $key => $value) { ?>
   <tr>
    <td><?php echo $key ?></td>
    <td><?php echo $value ?></td>
    <td><?php
     if(is_dir($path.$value) && ($value=='.')) {
      echo '<a href="new1.php?dir=',$value,'/">瀏覽</a>';
    }elseif(is_dir($path.$value)) {
     echo '<a href="new1.php?dir=',$value,'">瀏覽</a>';
    }elseif(!(is_dir($path.$value))){
     echo '<a href="./',$value,'">查看</a>';
    }
    
    ?></td>
   </tr>
   <?php } ?>
  </table>
</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章