当前位置:首页 > PHP

php商品评论怎么实现

2026-04-03 13:03:53PHP

实现PHP商品评论功能

数据库设计 创建商品评论表,包含字段如评论ID、用户ID、商品ID、评论内容、评分、评论时间等。

CREATE TABLE `product_reviews` (
  `review_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `content` text NOT NULL,
  `rating` tinyint(1) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`review_id`),
  KEY `product_id` (`product_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"></label>
    <!-- 其他星级选项 -->
  </div>

  <textarea name="content" required></textarea>
  <button type="submit">提交评论</button>
</form>

后端处理 创建submit_review.php处理表单提交,验证数据并存入数据库。

// 验证用户登录
session_start();
if (!isset($_SESSION['user_id'])) {
  header("Location: login.php");
  exit;
}

// 获取并过滤输入
$product_id = filter_input(INPUT_POST, 'product_id', FILTER_VALIDATE_INT);
$content = htmlspecialchars(trim($_POST['content']));
$rating = filter_input(INPUT_POST, 'rating', FILTER_VALIDATE_INT, 
          array('options' => array('min_range' => 1, 'max_range' => 5)));

// 数据验证
if (!$product_id || !$content || !$rating) {
  die('无效的输入参数');
}

// 数据库插入
try {
  $stmt = $pdo->prepare("INSERT INTO product_reviews 
                        (user_id, product_id, content, rating) 
                        VALUES (?, ?, ?, ?)");
  $stmt->execute([$_SESSION['user_id'], $product_id, $content, $rating]);

  header("Location: product.php?id=$product_id");
} catch (PDOException $e) {
  die("数据库错误: " . $e->getMessage());
}

评论显示 在商品页面显示所有评论,按时间倒序排列。

// 获取商品评论
$stmt = $pdo->prepare("SELECT r.*, u.username 
                      FROM product_reviews r 
                      JOIN users u ON r.user_id = u.user_id
                      WHERE product_id = ? 
                      ORDER BY created_at DESC");
$stmt->execute([$product_id]);
$reviews = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 显示评论
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>';
}

安全性考虑

  • 使用预处理语句防止SQL注入
  • 对输出内容进行HTML转义
  • 验证用户输入数据
  • 实现CSRF保护
  • 限制未登录用户提交评论

扩展功能建议

php商品评论怎么实现

  • 实现评论回复功能
  • 添加评论审核机制
  • 支持图片上传
  • 实现评论点赞功能
  • 添加评论分页显示

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

相关文章

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUES…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…

php实现伪静态

php实现伪静态

PHP 实现伪静态的方法 伪静态(URL Rewrite)是一种将动态URL转换为看似静态URL的技术,提升SEO友好性和用户体验。以下是几种常见的实现方式: 使用 Apache 的 mod_rew…

php实现抽奖程序

php实现抽奖程序

PHP实现抽奖程序 基本抽奖逻辑 创建一个简单的抽奖程序需要定义奖品、中奖概率及随机选择逻辑。以下是一个基础实现示例: <?php // 奖品配置(奖品名称 => 概率) $prizes…