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

無資料庫支援的簡易留言本:純文字檔實作

     編輯:PHP 綜合知識

背景動機

早期國內免費 MySQL 資源稀少,國外主機或太慢、或不開放給國內用戶。為了在無資料庫環境下仍能提供留言功能,設計了一個以純文字檔儲存資料的簡易留言本 gbook.php。

核心原理

  • 判斷 $message 變數是否存在:不存在則讀取檔案顯示留言;存在則處理新留言並寫入檔案。
  • 檔案命名慣例:basename($PHP_SELF) . ".comment",即「目前腳本檔名 + .comment」,例如 gbook.php.comment。
  • 留言內容以 HTML 表格格式儲存,包含姓名、Email、主題、留言本文、時間、IP。

完整程式碼(已整理縮排與修正語法)

<?php
if (isset($_POST['message'])) {
    $message = $_POST['message'];
    $name    = htmlspecialchars($_POST['name']);
    $email   = htmlspecialchars($_POST['email']);
    $subject = htmlspecialchars($_POST['subject']);

    // 換行轉 <p> 標籤
    $message = preg_replace("/\r\n|\r|\n/", "<p>", $message);

    $date = date("l, F j Y, h:i a");
    $ip   = $_SERVER['REMOTE_ADDR'];

    $entry = "<table border='0' cellspacing='0' width='640' cellpadding='0'>
    <tr>
        <td width='25%'><b>$name</b></td>
        <td width='25%'>$email</td>
        <td width='25%'>寫於--$date</td>
        <td width='25%'>來自>>$ip</td>
    </tr>
    <tr>
        <td width='100%' colspan='4'>$subject</td>
    </tr>
    <tr>
        <td width='100%' colspan='4'>$message</td>
    </tr>
</table><hr>";

    $filename = basename(__FILE__) . ".comment";
    $fp = fopen($filename, "a");
    fwrite($fp, $entry);
    fclose($fp);
}

// 讀取並輸出所有留言
$filename = basename(__FILE__) . ".comment";
if (file_exists($filename)) {
    readfile($filename);
}
?>

<form method="POST">
    <p>姓名:<input type="text" name="name" size="20">
    E-mail:<input type="text" name="email" size="24"><hr></p>
    主題:<input type="text" name="subject" size="55"><p></p>
    您想說的話:<br>
    <textarea name="message" rows="10" cols="60" wrap="virtual"></textarea><br><br>
    <input type="submit" name="submit" value="發表!">
    <input type="reset" value="重寫?" name="B2">
</form>

關鍵點解析

  1. 檔案鎖定:原碼未加鎖,高併發下可能資料損毀;實務上建議使用 flock() 或改用 SQLite。
  2. XSS 防護:範例已補上 htmlspecialchars(),避免惡意腳本注入。
  3. 效能限制:留言增多時讀取整個檔案會變慢,適合低流量個人站點。

延伸應用

同樣架構可擴充為:訪客留言板、簡易公告欄、靜態部落格評論系統。若需分頁、搜尋、後台管理,建議改用 SQLite 或資料庫。

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