最近在能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 傳值 中如果有+號 在獲取時會變成空格 使用替換函式解決。