本範例包含兩個檔案:guestbook.php(顯示留言與表單)與 ly.php(處理新增留言)。資料表結構需包含 name、mail、url、ip、time、title、ly 等欄位。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>簡易留言板</title>
<style>
body { font-family: sans-serif; color: #002878; font-size: 9pt; }
a { color: #002878; text-decoration: none; }
a:hover { color: #cc1111; }
table { font-size: 9pt; color: #002878; }
input, textarea { font-size: 9pt; width: 186px; background: #f8f8f8; border: 1px solid #9a9999; }
</style>
</head>
<body>
<div align="center">
<h2>留言板</h2>
<form method="POST" action="ly.php">
<table>
<tr><td align="right">姓名:</td><td><input type="text" name="T1" size="13"></td></tr>
<tr><td align="right">EMAIL:</td><td><input type="text" name="T2" size="13"></td></tr>
<tr><td align="right">個人主頁:</td><td><input type="text" name="T3" size="13" value="https://"></td></tr>
<tr><td align="right">主題:</td><td><input type="text" name="T4" size="13"></td></tr>
<tr><td align="right" valign="top">留言:</td><td><textarea name="S1" rows="10" cols="45"></textarea></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="提交"> <input type="reset" value="重寫"></td></tr>
</table>
</form>
<hr>
<?php
include "connect.rec"; // 資料庫連線設定
$perPage = 5;
$offset = isset($_GET['offset']) ? (int)$_GET['offset'] : 0;
// 取得總筆數
$cntRow = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS rcnt FROM guestbook"));
$total = $cntRow['rcnt'];
// 查詢分頁資料
$result = mysql_query("SELECT * FROM guestbook LIMIT $offset, $perPage");
while ($row = mysql_fetch_array($result)) {
echo "姓名: <font color='#000000'>{$row['name']}</font><br>";
echo "EMAIL: <font color='#3366FF'>{$row['mail']}</font><br>";
echo "個人主頁: <font color='#3366FF'>{$row['url']}</font><br>";
echo "來自: <font color='#3366FF'>{$row['ip']}</font><br>";
echo "留言時間: <font color='#3366FF'>{$row['time']}</font><br>";
echo "主題: <font color='#3366FF'>{$row['title']}</font><br>";
echo "內容: <font color='#000000'>{$row['ly']}</font><br>";
echo "<hr size='1' color='#6666FF'>";
}
// 分頁連結
if ($offset > 0) {
$pre = $offset - $perPage;
echo "<a href='?offset=$pre'>前一頁</a> ";
}
$pages = ceil($total / $perPage);
for ($i = 1; $i <= $pages; $i++) {
$newoffset = ($i - 1) * $perPage;
echo "<a href='?offset=$newoffset'>$i</a> ";
}
if ($offset + $perPage < $total) {
$next = $offset + $perPage;
echo "<a href='?offset=$next'>下一頁</a> ";
}
echo "<a href='javascript:history.back()'>返回</a>";
?>
</div>
</body>
</html>
<?php
include "connect.rec";
$name = $_POST['T1'];
$mail = $_POST['T2'];
$url = $_POST['T3'];
$title = $_POST['T4'];
$time = date("Y-m-d H:i:s");
$ip = $_SERVER['REMOTE_ADDR'];
$ly = $_POST['S1'];
$sql = "INSERT INTO guestbook (name, mail, url, ip, time, title, ly)
VALUES ('$name', '$mail', '$url', '$ip', '$time', '$title', '$ly')";
$result = mysql_query($sql);
if ($result) {
echo "留言成功!";
echo "<script>location='guestbook.php';</script>";
} else {
echo "留言失敗!";
echo "<a href='javascript:history.back()'>返回</a>";
}
?>
mysql_* 函式,實際專案請改用 mysqli 或 PDO 並採用預備語句防止 SQL 注入。htmlspecialchars() 轉義,避免 XSS 攻擊。此範例展示最基礎的 PHP + MySQL 留言板流程,適合初學者理解表單處理、分頁查詢與資料庫操作的基本概念。實務開發時請務必強化安全性與錯誤處理。