php 实现留言
PHP 实现留言功能
创建数据库表
留言功能通常需要一个数据库表来存储留言内容。以下是一个简单的MySQL表结构示例:

CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100),
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
创建留言表单
HTML表单用于用户提交留言:

<form action="submit_message.php" method="post">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email">
<label for="content">留言内容:</label>
<textarea id="content" name="content" required></textarea>
<button type="submit">提交留言</button>
</form>
处理表单提交
创建submit_message.php文件处理表单提交:
<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
// 获取表单数据
$name = $_POST['name'];
$email = $_POST['email'] ?? null;
$content = $_POST['content'];
// 插入数据
$stmt = $db->prepare("INSERT INTO messages (name, email, content) VALUES (?, ?, ?)");
$stmt->execute([$name, $email, $content]);
// 重定向回留言页面
header('Location: messages.php');
exit;
?>
显示留言列表
创建messages.php文件显示所有留言:
<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
// 查询所有留言
$stmt = $db->query("SELECT * FROM messages ORDER BY created_at DESC");
$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
<title>留言板</title>
</head>
<body>
<h1>留言板</h1>
<!-- 留言表单 -->
<form action="submit_message.php" method="post">
<!-- 表单内容同上 -->
</form>
<!-- 留言列表 -->
<div class="messages">
<?php foreach ($messages as $message): ?>
<div class="message">
<h3><?= htmlspecialchars($message['name']) ?></h3>
<p><?= nl2br(htmlspecialchars($message['content'])) ?></p>
<small><?= $message['created_at'] ?></small>
</div>
<?php endforeach; ?>
</div>
</body>
</html>
安全注意事项
- 使用预处理语句防止SQL注入
- 使用htmlspecialchars()防止XSS攻击
- 对用户输入进行验证
- 考虑添加CSRF保护
扩展功能
- 分页显示留言
- 管理员回复功能
- 留言审核机制
- 用户登录系统
- 富文本编辑器支持
这个实现提供了基本的留言功能,可以根据需求进一步扩展和完善。






