免費空間不支援 MySQL,或極簡項目無需資料庫開銷時,文本文件存儲是零配置、零依賴的備選方案。
note.php:顯示表單 + 讀取留言result.php:接收提交 + 寫入文件note.txt:留言數據文件(需可寫權限)<?php
// 讀取留言
$f = fopen('note.txt', 'r');
$msg = fread($f, filesize('note.txt'));
fclose($f);
?>
<html>
<head><title>小小留言本</title></head>
<body bgcolor="#cccccc">
<center><font size="4">小小留言本</font></center>
<form method="POST" action="result.php">
<table border="0" width="80%" align="center">
<tr><td width="20%">您的大名:</td>
<td><input type="text" name="nickname" style="width:100%"></td></tr>
<tr><td>電子郵件:</td>
<td><input type="text" name="email" style="width:100%"></td></tr>
<tr><td>留言:</td>
<td><textarea name="note" style="width:100%"></textarea></td></tr>
<tr><td></td><td align="center">
<input type="submit" value="確定"> <input type="reset" value="重寫">
</td></tr>
</table>
<hr>
<?php echo $msg; ?>
<p align="right"><small>作者:<a href="mailto:greenchn@163.net">東方一蛇</a><br>
主頁:<a href="https://bianceng.cn">編程入門</a></small></p>
</body>
</html>
<?php
$nickname = trim($_POST['nickname']);
$email = trim($_POST['email']);
$note = trim($_POST['note']);
if ($nickname && $note) {
$entry = "<b>$nickname</b> ($email) <br>$note<br><hr>\n";
$f = fopen('note.txt', 'a'); // 追加模式
fwrite($f, $entry);
fclose($f);
}
header('Location: note.php');
exit();
?>
flock($f, LOCK_EX) 獨佔鎖,寫入後 flock($f, LOCK_UN) 釋放,防止數據損壞htmlspecialchars() 轉義 HTML 標籤,防 XSS\n,顯示時 nl2br() 轉 <br><?php
$nickname = htmlspecialchars(trim($_POST['nickname']));
$email = htmlspecialchars(trim($_POST['email']));
$note = htmlspecialchars(trim($_POST['note']));
if ($nickname && $note) {
$entry = "<b>$nickname</b> ($email) <br>$note<br><hr>\n";
$f = fopen('note.txt', 'a');
if (flock($f, LOCK_EX)) {
fwrite($f, $entry);
flock($f, LOCK_UN);
}
fclose($f);
}
header('Location: note.php');
?>
note.txt 導入資料表,保留原 ID、時間戳