留言板实现php
留言板实现(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
);
前端表单页面(index.php)
<!DOCTYPE html>
<html>
<head>
<title>简易留言板</title>
<style>
.message-board { width: 600px; margin: 0 auto; }
.message { border: 1px solid #ddd; padding: 10px; margin-bottom: 10px; }
</style>
</head>
<body>
<div class="message-board">
<h1>留言板</h1>
<form method="post" action="post.php">
<div><input type="text" name="name" placeholder="您的姓名" required></div>
<div><input type="email" name="email" placeholder="您的邮箱"></div>
<div><textarea name="content" placeholder="留言内容" required></textarea></div>
<button type="submit">提交留言</button>
</form>
<h2>留言列表</h2>
<?php
require 'db.php';
$sql = "SELECT * FROM messages ORDER BY created_at DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo '<div class="message">';
echo '<h3>'.$row["name"].'</h3>';
if(!empty($row["email"])) {
echo '<p>邮箱: '.$row["email"].'</p>';
}
echo '<p>'.$row["content"].'</p>';
echo '<small>'.date('Y-m-d H:i', strtotime($row["created_at"])).'</small>';
echo '</div>';
}
} else {
echo "<p>暂无留言</p>";
}
$conn->close();
?>
</div>
</body>
</html>
数据库连接文件(db.php)
<?php
$servername = "localhost";
$username = "数据库用户名";
$password = "数据库密码";
$dbname = "数据库名";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
?>
留言处理脚本(post.php)
<?php
require 'db.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$content = htmlspecialchars($_POST['content']);
$sql = "INSERT INTO messages (name, email, content) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $name, $email, $content);
if ($stmt->execute()) {
header("Location: index.php");
} else {
echo "错误: " . $sql . "<br>" . $conn->error;
}
$stmt->close();
$conn->close();
}
?>
安全增强措施
XSS防护:使用htmlspecialchars()函数转义用户输入
$name = htmlspecialchars($_POST['name']);
SQL注入防护:使用预处理语句
$stmt = $conn->prepare("INSERT INTO messages (name, email, content) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $name, $email, $content);
功能扩展建议
增加分页功能
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = 10;
$offset = ($page - 1) * $limit;
$sql = "SELECT * FROM messages ORDER BY created_at DESC LIMIT $limit OFFSET $offset";
添加管理员回复功能
ALTER TABLE messages ADD COLUMN reply TEXT;
ALTER TABLE messages ADD COLUMN replied_at TIMESTAMP;
这个实现包含了留言板的基本功能:留言提交、留言显示和简单的安全防护。根据实际需求可以进一步扩展功能,如用户注册登录、留言审核、富文本编辑等。







