php评论功能怎么实现
实现PHP评论功能的方法
数据库设计
创建一个数据库表存储评论数据,常见字段包括id、user_id、content、created_at等。MySQL示例:
CREATE TABLE comments (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
content TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
表单提交处理
创建HTML表单用于提交评论,通过PHP接收并处理数据:
<form method="POST" action="submit_comment.php">
<textarea name="content" required></textarea>
<button type="submit">提交评论</button>
</form>
后端处理逻辑
在submit_comment.php中验证并存储评论数据:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$content = htmlspecialchars($_POST['content']);
$user_id = $_SESSION['user_id'] ?? 0; // 假设用户已登录
$stmt = $pdo->prepare("INSERT INTO comments (user_id, content) VALUES (?, ?)");
$stmt->execute([$user_id, $content]);
header("Location: comments.php"); // 重定向回评论页
}
?>
显示评论列表
从数据库查询并显示评论:
<?php
$stmt = $pdo->query("SELECT * FROM comments ORDER BY created_at DESC");
while ($comment = $stmt->fetch()) {
echo "<div class='comment'>";
echo "<p>" . htmlspecialchars($comment['content']) . "</p>";
echo "<small>Posted on " . $comment['created_at'] . "</small>";
echo "</div>";
}
?>
安全性增强
对输入数据进行过滤和转义,防止XSS攻击:

$content = filter_input(INPUT_POST, 'content', FILTER_SANITIZE_STRING);
使用预处理语句防止SQL注入:
$stmt = $pdo->prepare("INSERT INTO comments (content) VALUES (:content)");
$stmt->bindParam(':content', $content);
用户认证
确保只有登录用户能发表评论:
session_start();
if (!isset($_SESSION['user_id'])) {
die('请先登录');
}






