php评论功能怎么实现
数据库设计
创建评论表存储评论数据,基本字段包括评论ID、用户ID、内容、创建时间、关联文章ID等。使用MySQL示例:
CREATE TABLE comments (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
article_id INT NOT NULL,
FOREIGN KEY (article_id) REFERENCES articles(id)
);
前端表单
HTML表单用于提交评论内容,需包含内容输入框和提交按钮:
<form action="submit_comment.php" method="post">
<textarea name="content" required></textarea>
<input type="hidden" name="article_id" value="<?php echo $article_id; ?>">
<button type="submit">提交评论</button>
</form>
后端处理
创建PHP脚本处理表单提交,验证数据并存入数据库:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$content = htmlspecialchars($_POST['content']);
$article_id = intval($_POST['article_id']);
$stmt = $pdo->prepare("INSERT INTO comments (user_id, content, article_id) VALUES (?, ?, ?)");
$stmt->execute([$_SESSION['user_id'], $content, $article_id]);
header("Location: article.php?id=$article_id");
exit;
}
?>
显示评论
从数据库查询评论并显示在页面上:
<?php
$stmt = $pdo->prepare("SELECT * FROM comments WHERE article_id = ? ORDER BY created_at DESC");
$stmt->execute([$article_id]);
$comments = $stmt->fetchAll();
foreach ($comments as $comment) {
echo '<div class="comment">';
echo '<p>' . htmlspecialchars($comment['content']) . '</p>';
echo '<small>Posted on ' . $comment['created_at'] . '</small>';
echo '</div>';
}
?>
安全措施
防止SQL注入和XSS攻击:
- 使用预处理语句处理数据库查询
- 对用户输入使用
htmlspecialchars()转义 - 验证用户权限和输入数据
扩展功能
实现回复功能可添加parent_id字段标识父评论:
ALTER TABLE comments ADD parent_id INT DEFAULT NULL;
前端增加回复按钮并传递父评论ID:
function replyTo(commentId) {
document.getElementById('parent_id').value = commentId;
}






