線上書籍

Home

[991]PHP網站開發 進階應用技巧2

一、讀取目錄內容
define("_UPLOAD_DIR","目錄的絕對路徑");
define("_UPLOAD_URL","目錄的網址");

if($dh = opendir(_UPLOAD_DIR)){
    while(($file = readdir($dh)) !== false){
        if($file==".")continue;
        $type=filetype(_UPLOAD_DIR."/".$file);
        if($type=="dir"){
            $dir_arr[]=$file;
        }else{
            $file_arr[]=$file;
        }
    }
    closedir($dh);
    //秀出內容
}




//開啟目錄
//用迴圈讀取目錄中的檔案或目錄
//遇到「.」則跳過
//取得檔案類型
//若為目錄($type=dir)
//加入目錄陣列
//否則($type=file)
//加入檔案陣列


//關閉目錄

二、秀出內容(並加入圖示)

1.把TodunVote1.0.zip解壓縮,並加入css檔。

$main="
<link rel='stylesheet' type='text/css' href='iconize_l.css' />
<link rel='stylesheet' type='text/css' href='tinytable.css' />
<table>
<tr><th>名稱</th><th>大小</th><th>類型< /th></tr>";
foreach($dir_arr as $sub_dir){
    $dirSize=formatBytes(dirSize(_UPLOAD_DIR."/".$sub_dir));
    $main.="<tr>
    <td><a href='index.php?to="._UPLOAD_DIR."/".$sub_dir."'>$sub_dir</a></td>
    <td align='right'>$dirSize</td>
    <td>目錄</td></tr>";
}
foreach($file_arr as $file){
    $filesize=formatBytes(filesize(_UPLOAD_DIR."/".$file));
    $main.="<tr>
    <td><a href='"._UPLOAD_URL."/".$file."'>$file</a></td>
    <td align='right'>$filesize</td>
    <td>檔案</td></tr>";
}
$main.="</table>";

//主內容變數
//引入圖示CSS
//引入表格CSS
//表格
//表格標題
//用迴圈讀出目錄名稱
//計算目錄大小
//產生一列
//顯示目錄名稱
//顯示目錄大小
//顯示目錄類型

//用迴圈讀出檔案名稱
//計算檔案大小
//產生一列
//顯示檔案名稱
//顯示檔案大小
//顯示檔案類型

三、切換目錄
$base_dir="D:/httpd/07/uploads";
$base_url="http://localhost/07/uploads";
if(!empty($_GET['to'])){
    $dir=$_GET['to'];
}else{
    $dir=$base_dir;
}
$dir=realpath($dir);
$dir=str_replace("\\","/",$dir);

define("_UPLOAD_DIR",$dir);
define("_UPLOAD_URL",str_replace($base_dir,$base_url,$dir));

//重新定義目錄的絕對路徑
//重新定義目錄的網址
//若有傳入 to 變數
//指定新目錄路徑
//否則
// 用預設路徑

//取得真實路徑
//把win的路徑改為 /

//把新路徑定義到目錄絕對路徑
//把新網址定 義到目錄網址

四、限制目錄範圍
$len=strlen($base_dir);
if(substr($dir,0,$len)!=$base_dir)
    die("「{$dir}」為不合法路徑");

//計算原有目錄絕對路徑長度
//看目前目錄之路徑前面是否和$base_dir相同
//若不同,則擋下。