php实现留言板
PHP 留言板实现步骤
数据库设计
创建一个名为 messages 的数据库表,包含以下字段:
id:主键,自增name:留言者姓名,VARCHAR(50)email:留言者邮箱,VARCHAR(100)content:留言内容,TEXTcreated_at:留言时间,TIMESTAMP
SQL 创建语句示例:
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
连接数据库
创建 config.php 文件存放数据库连接信息:
<?php
$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());
}
?>
提交留言功能
创建 submit.php 处理表单提交:
<?php
require 'config.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$content = htmlspecialchars($_POST['content']);
$stmt = $pdo->prepare("INSERT INTO messages (name, email, content) VALUES (?, ?, ?)");
$stmt->execute([$name, $email, $content]);
header("Location: index.php");
exit;
}
?>
显示留言列表
创建 index.php 显示所有留言:
<?php
require 'config.php';
$stmt = $pdo->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.php" method="post">
姓名: <input type="text" name="name" required><br>
邮箱: <input type="email" name="email" required><br>
内容: <textarea name="content" required></textarea><br>
<button type="submit">提交</button>
</form>
<hr>
<?php foreach ($messages as $message): ?>
<div>
<h3><?= $message['name'] ?> (<?= $message['email'] ?>)</h3>
<p><?= $message['content'] ?></p>
<small><?= $message['created_at'] ?></small>
</div>
<hr>
<?php endforeach; ?>
</body>
</html>
安全增强措施
对输入数据进行过滤和验证:
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$content = filter_input(INPUT_POST, 'content', FILTER_SANITIZE_STRING);
if (!$email) {
die("无效的邮箱地址");
}
分页功能实现
修改查询语句实现分页:
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 5;
$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();
样式美化
添加基础CSS样式:
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
form {
margin-bottom: 20px;
}
input, textarea {
width: 100%;
margin-bottom: 10px;
}
textarea {
height: 100px;
}
部署注意事项
- 确保服务器支持PHP和MySQL
- 设置正确的数据库权限
- 在生产环境中使用HTTPS加密传输
- 定期备份数据库
- 考虑添加验证码防止垃圾留言







