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

PHP 個人網站自動化發布系統:從資料庫到靜態頁生成

     編輯:PHP 相關知識

早期 CMS 原型:資料庫驅動 + 模板引擎 + 靜態化

本系統展示經典「動態管理、靜態發布」架構:後台管理文章存入 MySQL,前台根據模板生成靜態 HTML,降低資料庫負載,提升存取速度。

系統架構圖

[後台管理介面] → [MySQL 資料庫] → [模板引擎] → [靜態 HTML 檔案] → [前台展示]

核心模組與程式碼片段

1. 資料庫設計

CREATE TABLE wenzhang (
    id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
    timu VARCHAR(200) NOT NULL,      -- 標題
    zuozhe VARCHAR(18) NOT NULL,     -- 作者
    laiyuan VARCHAR(40) NOT NULL,    -- 來源
    textt TEXT NOT NULL,             -- 正文
    riqi DATETIME NOT NULL,          -- 日期
    PRIMARY KEY (id)
);

2. 文章發布介面 input.php

簡單表單送至 shengcheng.php,欄位:標題、作者、來源、正文。

3. 模板管理 muban.php / muobanshen.php

將頁面拆解為三段模板儲存為文字檔:

  • muoban1.txt:標題前區塊(含 CSS/JS 引入、Header)
  • muoban2.txt:正文前區塊(文章標題、作者、來源、時間)
  • muoban3.txt:正文後區塊(Footer、版權資訊)
<?php
// muobanshen.php 存檔模板
$fdd = fopen("muoban1.txt", "w"); fwrite($fdd, $_POST['muban1']); fclose($fdd);
$fdd = fopen("muoban2.txt", "w"); fwrite($fdd, $_POST['muban2']); fclose($fdd);
$fdd = fopen("muoban3.txt", "w"); fwrite($fdd, $_POST['muban3']); fclose($fdd);
echo "模板修改成功!";
?>

4. 靜態頁生成核心 guanli.php 片段

<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("study", $db);

// 更新文章資料
if (isset($_POST['submit'])) {
    $sql = "UPDATE wenzhang SET timu='$timu', zuozhe='$zuozhe', laiyuan='$laiyuan', textt='$textt' WHERE id=$id";
    mysql_query($sql);

    // 組合靜態頁
    $t = date("Y-m-d H:i:s");
    $muoban1 = file_get_contents("muoban1.txt");
    $muoban2 = file_get_contents("muoban2.txt");
    $muoban3 = file_get_contents("muoban3.txt");

    $content = $muoban1 . $muoban2;
    $content .= "<div align='center'>作者:$zuozhe 來源:$laiyuan 時間:$t</div>";
    $content .= $textt . $muoban3;

    // 寫入靜態檔
    $filename = "article_$id.html";
    file_put_contents($filename, $content);
    echo "靜態頁生成成功:$filename";
}
?>

安全性與維護性重構建議

  1. 防止 SQL 注入:使用 PDO 預處理或 mysqli_real_escape_string()。
  2. 輸出轉義:靜態頁生成前對使用者輸入進行 htmlspecialchars()。
  3. 模板引擎升級:引入 Smarty、Twig 或 Blade,支援繼承、區塊、過濾器等進階功能。
  4. 檔案權限:確保模板與輸出目錄權限正確(0755 目錄、0644 檔案)。
  5. 錯誤處理:檔案寫入失敗、資料庫連線失敗時給予明確提示與日誌記錄。

現代化替代方案

  • 動態渲染:PHP 直接輸出 HTML,搭配 OpCache、Redis 快取,效能足夠應付中小型站點。
  • 靜態站點生成器:Hugo、Jekyll、Next.js (SSG) 等專用工具。
  • Headless CMS:Strapi、Contentful 等提供 API,前端獨立部署。

此系統雖屬早期實作,但其「資料分離、模板驅動、靜態輸出」核心思想仍是現代 CMS 與靜態生成器的基石。

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