php商品评论怎么实现
实现PHP商品评论功能
商品评论功能通常包括评论提交、显示、管理等功能。以下是实现的基本步骤和代码示例。
数据库设计
创建评论表,包含评论ID、用户ID、商品ID、评论内容、评分、时间等字段。

CREATE TABLE `product_reviews` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`content` text NOT NULL,
`rating` tinyint(1) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `product_id` (`product_id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
评论提交表单
在商品详情页添加评论表单,包含评分和评论内容输入框。
<form action="submit_review.php" method="post">
<input type="hidden" name="product_id" value="<?php echo $product_id; ?>">
<div class="rating">
<input type="radio" id="star5" name="rating" value="5" />
<label for="star5">5</label>
<!-- 其他星级选项 -->
</div>
<textarea name="content" required></textarea>
<button type="submit">提交评论</button>
</form>
处理评论提交
创建submit_review.php处理表单提交,验证数据并存入数据库。

<?php
session_start();
require 'db_connect.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$product_id = filter_input(INPUT_POST, 'product_id', FILTER_VALIDATE_INT);
$user_id = $_SESSION['user_id'];
$content = htmlspecialchars(trim($_POST['content']));
$rating = filter_input(INPUT_POST, 'rating', FILTER_VALIDATE_INT,
['options' => ['min_range' => 1, 'max_range' => 5]]);
if ($product_id && $user_id && $content && $rating) {
$stmt = $pdo->prepare("INSERT INTO product_reviews
(product_id, user_id, content, rating) VALUES (?, ?, ?, ?)");
$stmt->execute([$product_id, $user_id, $content, $rating]);
header("Location: product.php?id=$product_id");
exit;
} else {
die('无效的输入数据');
}
}
?>
显示评论列表
在商品页面查询并显示该商品的所有评论。
<?php
$product_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if ($product_id) {
$stmt = $pdo->prepare("SELECT r.*, u.username
FROM product_reviews r
JOIN users u ON r.user_id = u.id
WHERE r.product_id = ?
ORDER BY r.created_at DESC");
$stmt->execute([$product_id]);
$reviews = $stmt->fetchAll();
foreach ($reviews as $review) {
echo '<div class="review">';
echo '<h4>' . htmlspecialchars($review['username']) . '</h4>';
echo '<div class="rating">' . str_repeat('★', $review['rating']) . '</div>';
echo '<p>' . nl2br(htmlspecialchars($review['content'])) . '</p>';
echo '<small>' . $review['created_at'] . '</small>';
echo '</div>';
}
}
?>
评论管理功能
管理员后台可以查看和删除评论。
// 获取所有评论
$stmt = $pdo->query("SELECT r.*, u.username, p.name as product_name
FROM product_reviews r
JOIN users u ON r.user_id = u.id
JOIN products p ON r.product_id = p.id
ORDER BY r.created_at DESC");
$all_reviews = $stmt->fetchAll();
// 删除评论
if (isset($_GET['delete'])) {
$delete_id = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_INT);
if ($delete_id) {
$stmt = $pdo->prepare("DELETE FROM product_reviews WHERE id = ?");
$stmt->execute([$delete_id]);
header("Location: admin_reviews.php");
exit;
}
}
安全注意事项
- 使用预处理语句防止SQL注入
- 对输出内容使用htmlspecialchars()防止XSS攻击
- 验证用户权限,确保只有登录用户才能评论
- 对管理员操作进行权限验证
- 考虑添加评论字数限制和频率限制
扩展功能
- 添加评论回复功能
- 实现评论点赞功能
- 添加评论图片上传
- 实现评论筛选和排序
- 添加敏感词过滤机制
以上实现提供了商品评论系统的基本框架,可根据具体需求进行扩展和优化。






