当前位置:首页 > PHP

php评论功能怎么实现

2026-01-29 06:50:30PHP

数据库设计

创建评论表存储评论数据,表结构可包含以下字段:

  • id:自增主键
  • content:评论内容(TEXT类型)
  • user_id:用户ID(关联用户表)
  • article_id:文章ID(关联文章表)
  • created_at:评论时间(TIMESTAMP)

SQL示例:

CREATE TABLE comments (
  id INT AUTO_INCREMENT PRIMARY KEY,
  content TEXT NOT NULL,
  user_id INT NOT NULL,
  article_id INT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

表单提交处理

创建评论提交表单:

<form action="submit_comment.php" method="post">
  <textarea name="content" required></textarea>
  <input type="hidden" name="article_id" value="<?= $article_id ?>">
  <button type="submit">提交评论</button>
</form>

表单处理脚本(submit_comment.php):

php评论功能怎么实现

<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $content = htmlspecialchars($_POST['content']);
  $article_id = intval($_POST['article_id']);
  $user_id = $_SESSION['user_id']; // 假设用户已登录

  // 数据库插入
  $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
  $stmt = $pdo->prepare("INSERT INTO comments (content, user_id, article_id) VALUES (?, ?, ?)");
  $stmt->execute([$content, $user_id, $article_id]);

  header("Location: article.php?id=$article_id");
}
?>

评论显示

在文章页面显示评论:

<?php
$article_id = intval($_GET['id']);
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$stmt = $pdo->prepare("SELECT c.*, u.username FROM comments c JOIN users u ON c.user_id = u.id WHERE article_id = ? ORDER BY created_at DESC");
$stmt->execute([$article_id]);
$comments = $stmt->fetchAll();

foreach ($comments as $comment) {
  echo '<div class="comment">';
  echo '<strong>' . htmlspecialchars($comment['username']) . '</strong>';
  echo '<p>' . htmlspecialchars($comment['content']) . '</p>';
  echo '<small>' . $comment['created_at'] . '</small>';
  echo '</div>';
}
?>

安全增强

防止XSS攻击: 对所有用户输入使用htmlspecialchars()函数处理

php评论功能怎么实现

防止SQL注入: 使用PDO预处理语句

限制评论频率:

// 检查最后评论时间
$stmt = $pdo->prepare("SELECT created_at FROM comments WHERE user_id = ? ORDER BY created_at DESC LIMIT 1");
$stmt->execute([$_SESSION['user_id']]);
$last_comment = $stmt->fetch();

if ($last_comment && (time() - strtotime($last_comment['created_at'])) < 60) {
  die('评论过于频繁,请稍后再试');
}

分页功能

实现评论分页:

$per_page = 10;
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$offset = ($page - 1) * $per_page;

$stmt = $pdo->prepare("SELECT SQL_CALC_FOUND_ROWS c.*, u.username FROM comments c JOIN users u ON c.user_id = u.id WHERE article_id = ? ORDER BY created_at DESC LIMIT ? OFFSET ?");
$stmt->bindValue(1, $article_id, PDO::PARAM_INT);
$stmt->bindValue(2, $per_page, PDO::PARAM_INT);
$stmt->bindValue(3, $offset, PDO::PARAM_INT);
$stmt->execute();

$total = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();
$total_pages = ceil($total / $per_page);

标签: 功能php
分享给朋友:

相关文章

php实现socket

php实现socket

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

php实现定时任务

php实现定时任务

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

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

uniapp实现支付功能

uniapp实现支付功能

支付功能实现概述 在UniApp中实现支付功能通常需要对接第三方支付平台(如微信支付、支付宝支付等)。以下是基于微信支付和支付宝支付的通用实现流程。 微信支付实现步骤 1. 配置支付权限 在微信开放…

vue实现收货功能

vue实现收货功能

实现收货功能的基本思路 在Vue中实现收货功能通常涉及前端界面交互、后端API调用以及状态管理。以下是关键步骤和代码示例: 页面布局与数据绑定 使用Vue的模板语法构建收货表单,包含收货人、联系方式…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…