php無限遍歷目錄-修正版

奮程式序猿發表於2014-02-20

最近在能php目錄操作,搞了一個目錄無限遍歷:

使用的函式有:

isset()判斷某個變數是否定義

chdir() 將當前目錄改變為指定的目錄。

opendir() 開啟目錄。

readdir()讀取目錄。

getcwd()。獲取當前目錄。

還用到了for  if  GET傳值 大概就這些東東:

下面是程式碼:



<?php
if(isset($_GET['id']))//判斷是否傳值
{
    $s=str_replace(' ','+',$_GET['id']);
    $s=base64_decode($s);//接受傳遞的值 值一般是要開啟的目錄的絕對路勁
        chdir($s);//切換到要開啟的目錄
    }
$a=opendir('.');//開啟當前目錄
while(false!==($c=readdir($a)))//迴圈遍歷目錄內容的檔名
{         
       if(is_dir($c))//判斷是目錄還是檔案
       {
           if($c=='.')
           {
               }
               else
               {
           if($c=='..')
           {
           $w=base64_encode(substr(getcwd(),0,strrpos(getcwd(),'\\')));//當前路徑加上目錄名 就是目錄的絕對路徑
           echo "上一級"."<a href='6.php?id=$w'>開啟</a><br />";//當點選開啟時將要開啟的絕對路徑傳遞出去  用chdir 切換到要開啟的目錄下
           }else
           {
               $w=base64_encode(getcwd().'\\'.$c);//當前路徑加上目錄名 就是目錄的絕對路徑
           echo "$c"."<a href='6.php?id=$w'>開啟</a><br />";//當點選開啟時將要開啟的絕對路徑傳遞出去  用chdir 切換到要開啟的目錄下
               }
               }
           }
           else
           {
               echo "$c 不是目錄<br />";
               }
}

?>

 

 

 比上一次程式碼 修正了 。  和 。。  兩個系統目錄問題 修正了  get傳值  中文錯誤問題   修正方法  。  和。。  通過 if 判斷修正    get 傳值使用的是 base64_encode   base64_decode  編碼和解碼  在修改時 發現 get 傳值 中如果有+號  在獲取時會變成空格  使用替換函式解決。

大家如果有什麼建議可以提出來!!謝謝!!

相關文章