php回复功能实现
实现PHP回复功能
在PHP中实现回复功能通常涉及数据库操作、表单处理和前端展示。以下是实现回复功能的关键步骤:
数据库设计
创建两个表分别存储主题帖和回复内容:

CREATE TABLE topics (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE replies (
id INT AUTO_INCREMENT PRIMARY KEY,
topic_id INT NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (topic_id) REFERENCES topics(id)
);
表单处理
创建回复表单并处理提交数据:
// reply_form.php
<form method="POST" action="submit_reply.php">
<input type="hidden" name="topic_id" value="<?= $_GET['topic_id'] ?>">
<textarea name="content" required></textarea>
<button type="submit">提交回复</button>
</form>
// submit_reply.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$topic_id = $_POST['topic_id'];
$content = $_POST['content'];
$stmt = $pdo->prepare("INSERT INTO replies (topic_id, content) VALUES (?, ?)");
$stmt->execute([$topic_id, $content]);
header("Location: topic.php?id=".$topic_id);
exit;
}
显示回复列表
在主题页面显示所有回复:

// topic.php
$topic_id = $_GET['id'];
$replies = $pdo->query("SELECT * FROM replies WHERE topic_id = $topic_id ORDER BY created_at DESC");
foreach ($replies as $reply) {
echo "<div class='reply'>";
echo "<p>".htmlspecialchars($reply['content'])."</p>";
echo "<small>".$reply['created_at']."</small>";
echo "</div>";
}
安全防护
添加必要的安全措施:
// 防止SQL注入
$stmt = $pdo->prepare("INSERT INTO replies (topic_id, content) VALUES (:topic_id, :content)");
$stmt->bindParam(':topic_id', $_POST['topic_id'], PDO::PARAM_INT);
$stmt->bindParam(':content', $_POST['content'], PDO::PARAM_STR);
$stmt->execute();
// XSS防护
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
分页功能
为大量回复添加分页:
$per_page = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $per_page;
$total = $pdo->query("SELECT COUNT(*) FROM replies WHERE topic_id = $topic_id")->fetchColumn();
$pages = ceil($total / $per_page);
$replies = $pdo->query("SELECT * FROM replies WHERE topic_id = $topic_id ORDER BY created_at DESC LIMIT $offset, $per_page");
以上代码实现了基本的PHP回复功能,可以根据实际需求进一步扩展和完善。






