首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP + AJAX 實作類 Windows 檔案管理系統(二)dir.php 核心邏輯解析

     編輯:PHP 相關知識

PHP + AJAX 實作類 Windows 檔案管理系統(二)dir.php 核心邏輯解析

dir.php 是前端進入點,負責讀取指定目錄、產生檔案/資料夾圖示 HTML、輸出工具列、新建資料夾佔位區塊。以下逐段解析關鍵函式。

1. 目錄路徑處理

$dir_path = isset($_GET['url']) ? $_GET['url'] : '..';
$lastdir = substr($dir_path, 0, strlen($dir_path) - strlen(substr($dir_path, strrpos($dir_path, "/"))));

取得上層目錄路徑供「返回上級」按鈕使用。

2. 工具列輸出 Tool()

產生固定按鈕:根目錄、上一頁、下一頁、上層目錄、新建文字檔、新建資料夾、貼上、上傳。按鈕透過 onclick 呼叫 js.js 中的對應函式。

3. 目錄掃描與輸出 CheckDir()

function CheckDir($dir_path) {
    if (is_dir($dir_path) && $dir_file = opendir($dir_path)) {
        while (($dir_list = readdir($dir_file)) !== false) {
            if ($dir_list != "." && $dir_list != "..") {
                echo "<div class='folder' oncontextmenu=\"return myMenuShow(this,'$dir_path/$dir_list','$dir_path/')\" id='$dir_path/$dir_list'>
                    <a href='?url=$dir_path/$dir_list'><img src='" . Getfiletype($dir_list) . "' border=0 onload=\"resizepic(this);\" /></a>
                    <p id='$dir_list' onClick=\"edit(this,'$dir_path/$dir_list');\">$dir_list</p>
                </div>\n";
            }
        }
        closedir($dir_file);
    }
    Folderexp($dir_path); // 輸出新建資料夾區塊
}
  • 略過 . 與 .. 避免無限遞迴。
  • 每個項目綁定 oncontextmenu 呼叫 document.js 的 myMenuShow 顯示右鍵選單。
  • onclick 綁定 edit() 啟用重命名編輯模式。
  • 圖片 onload 呼叫 resizepic() 自動縮放至 56px 內。

4. 圖示判斷 Getfiletype() / Getextends()

  • 資料夾固定回傳 fold.jpg。
  • 檔案依副檔名對應:圖片直接顯示縮圖;php/asp/jsp/aspx/xml 共用 asp_php_jsp.jpg;htm/html/shtml/js 共用 html_js.jpg;txt、doc 各有專屬圖示;其餘預設資料夾圖示。

5. 新建資料夾佔位 Folderexp()

輸出一個隱藏的 <div id="t">,內含輸入框,失焦時呼叫 Losefocus() 送出 AJAX 建立資料夾請求。

安全性提醒

程式直接使用 $_GET['url'] 拼接路徑,未做路徑遍歷防禦(如 ../../etc/passwd)。實務上必須以 realpath() 限制在允許根目錄下,並過濾 ..。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved