当前位置:首页 > PHP

php商品评论怎么实现

2026-02-14 05:00:23PHP

实现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>';
    }
}
?>

评论管理功能

管理员后台可以查看和删除评论。

php商品评论怎么实现

// 获取所有评论
$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;
    }
}

安全注意事项

  1. 使用预处理语句防止SQL注入
  2. 对输出内容使用htmlspecialchars()防止XSS攻击
  3. 验证用户权限,确保只有登录用户才能评论
  4. 对管理员操作进行权限验证
  5. 考虑添加评论字数限制和频率限制

扩展功能

  1. 添加评论回复功能
  2. 实现评论点赞功能
  3. 添加评论图片上传
  4. 实现评论筛选和排序
  5. 添加敏感词过滤机制

以上实现提供了商品评论系统的基本框架,可根据具体需求进行扩展和优化。

标签: 商品php
分享给朋友:

相关文章

vue实现商品

vue实现商品

Vue实现商品功能的方法 在Vue中实现商品功能通常涉及商品列表展示、商品详情、购物车操作等模块。以下是几种常见的实现方式: 商品列表展示 使用v-for指令循环渲染商品数据,结合Vue的响应式特性…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…