php实现留言板
PHP 实现留言板的基础步骤
数据库设计
创建一个 MySQL 数据库表存储留言信息,表结构可包含以下字段:
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
连接数据库
使用 PHP 的 PDO 或 MySQLi 扩展连接数据库:
$host = 'localhost';
$dbname = 'message_board';
$username = 'root';
$password = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("数据库连接失败: " . $e->getMessage());
}
提交留言处理
创建表单提交处理逻辑,将用户输入存入数据库:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = htmlspecialchars($_POST['username']);
$content = htmlspecialchars($_POST['content']);
$stmt = $pdo->prepare("INSERT INTO messages (username, content) VALUES (?, ?)");
$stmt->execute([$username, $content]);
}
显示留言列表
从数据库查询留言并显示:
$stmt = $pdo->query("SELECT * FROM messages ORDER BY created_at DESC");
$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($messages as $message) {
echo "<div class='message'>";
echo "<h3>" . $message['username'] . "</h3>";
echo "<p>" . $message['content'] . "</p>";
echo "<small>" . $message['created_at'] . "</small>";
echo "</div>";
}
前端表单
创建简单的 HTML 表单供用户提交留言:
<form method="POST" action="">
<input type="text" name="username" placeholder="您的姓名" required>
<textarea name="content" placeholder="留言内容" required></textarea>
<button type="submit">提交留言</button>
</form>
安全增强措施
防止 XSS 攻击
对所有用户输入使用 htmlspecialchars() 函数进行转义:
$username = htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');
防止 SQL 注入
使用预处理语句(Prepared Statements)代替直接拼接 SQL:
$stmt = $pdo->prepare("INSERT INTO messages (username, content) VALUES (:username, :content)");
$stmt->execute([
':username' => $username,
':content' => $content
]);
扩展功能建议
分页显示
实现留言分页功能,避免数据量过大时页面加载缓慢:
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$stmt = $pdo->prepare("SELECT * FROM messages ORDER BY created_at DESC LIMIT :offset, :perPage");
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
用户认证
添加简单的用户注册/登录功能,区分管理员和普通用户:
// 用户表结构示例
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
is_admin BOOLEAN DEFAULT FALSE
);
留言回复功能
扩展数据库结构支持回复功能:

ALTER TABLE messages ADD COLUMN parent_id INT DEFAULT NULL;
ALTER TABLE messages ADD FOREIGN KEY (parent_id) REFERENCES messages(id);
完整示例结构
/message-board
│
├── index.php # 显示留言列表和表单
├── post.php # 处理留言提交
├── config.php # 数据库配置
├── style.css # 样式文件
└── functions.php # 公共函数






