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

PHP 實現檔案線上編輯與儲存功能

     編輯:PHP 綜合知識

瀏覽器端編輯伺服器檔案:PHP 讀寫檔案完整範例

適用於簡易 CMS、設定檔線上修改、模板編輯等場景。核心流程:讀取檔案內容 → 顯示於 textarea → 使用者修改送出 → 寫入檔案。注意:生產環境務必加入權限驗證、CSRF 保護、備份機制。

讀取檔案頁面 read_file.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>檔案編輯器</title>
</head>
<body>
<form action="save_file.php" method="post">
    <textarea name="file_contents" style="width:100%; height:600px; font-family:monospace;"><?php
        $fileName = "config/settings.php";  // 目標檔案路徑
        $handle = fopen($fileName, "r");
        if ($handle) {
            while (!feof($handle)) {
                echo htmlspecialchars(fgets($handle));  // 防 XSS
            }
            fclose($handle);
        }
    ?></textarea>
    <input type="hidden" name="original_file_name" value="<?php echo $fileName; ?>" />
    <input type="hidden" name="page" value="<?php echo $_SERVER['PHP_SELF']; ?>" />
    <br><button type="submit">儲存變更</button>
</form>
</body>
</html>

儲存檔案 save_file.php

<?php
session_start();

$file = $_POST['original_file_name'];
$content = $_POST['file_contents'];
$redirect = $_POST['page'];

// 基本安全檢查
$allowed_dir = __DIR__ . '/config/';
$real_file = realpath($file);
$real_allowed = realpath($allowed_dir);

if ($real_file === false || strpos($real_file, $real_allowed) !== 0) {
    $_SESSION['error'] = '<span style="color:red">非法檔案路徑</span>';
    header("Location: $redirect");
    exit;
}

// 寫入檔案
$handle = fopen($file, "w");
if ($handle) {
    if (fwrite($handle, $content) === false) {
        $_SESSION['error'] = '<span style="color:red">寫入失敗</span>';
    } else {
        $_SESSION['error'] = '<span style="color:green">檔案儲存成功</span>';
    }
    fclose($handle);
} else {
    $_SESSION['error'] = '<span style="color:red">無法開啟檔案</span>';
}

header("Location: $redirect");
?>

安全性關鍵點

  1. 路徑遍歷防護:使用 `realpath()` 解析真實路徑,確認在允許目錄下
  2. 輸出編碼:`htmlspecialchars()` 防止檔案內容含 HTML/JS 導致 XSS
  3. 權限控制:僅允許特定角色(如管理員)存取編輯頁
  4. CSRF Token:表單加入一次性 Token 驗證
  5. 備份機制:寫入前自動備份原檔(如 `copy($file, $file . '.bak.' . date('YmdHis'))`)
  6. 檔案類型限制:僅允許編輯 `.php` `.ini` `.txt` `.json` 等文字檔

擴展功能建議

  • 整合 CodeMirror/Monaco Editor 提供語法高亮、行號、縮排
  • 支援多檔案分頁編輯、目錄樹導航
  • Git 整合:儲存時自動 commit、顯示 diff 歷史
  • 語法檢查:PHP `lint` 驗證、JSON 格式驗證

此基礎範例展示核心讀寫流程,實際部署請依專案安全需求完善防護機制。

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