当前位置:首页 > PHP

php实现评论回复

2026-02-15 13:10:52PHP

PHP实现评论回复功能

数据库设计

创建一个包含评论和回复的表结构,通常需要以下字段:

  • id: 主键
  • content: 评论内容
  • parent_id: 父评论ID(0表示顶级评论)
  • user_id: 用户ID
  • created_at: 创建时间
CREATE TABLE comments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content TEXT NOT NULL,
    parent_id INT DEFAULT 0,
    user_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

添加评论功能

通过表单提交评论内容,PHP处理并存入数据库:

// 处理评论提交
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['content'])) {
    $content = htmlspecialchars($_POST['content']);
    $parentId = isset($_POST['parent_id']) ? (int)$_POST['parent_id'] : 0;

    // 假设已连接数据库
    $stmt = $pdo->prepare("INSERT INTO comments (content, parent_id, user_id) VALUES (?, ?, ?)");
    $stmt->execute([$content, $parentId, $_SESSION['user_id']]);
}

显示评论及回复

递归方式获取评论层级结构:

function getComments($parentId = 0) {
    global $pdo;
    $stmt = $pdo->prepare("SELECT * FROM comments WHERE parent_id = ? ORDER BY created_at DESC");
    $stmt->execute([$parentId]);
    $comments = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($comments as &$comment) {
        $comment['replies'] = getComments($comment['id']);
    }

    return $comments;
}

// 显示评论
$comments = getComments();
foreach ($comments as $comment) {
    echo '<div class="comment">';
    echo '<p>' . $comment['content'] . '</p>';
    echo '<a href="?reply_to=' . $comment['id'] . '">回复</a>';

    // 显示回复
    if (!empty($comment['replies'])) {
        echo '<div class="replies">';
        foreach ($comment['replies'] as $reply) {
            echo '<div class="reply">';
            echo '<p>' . $reply['content'] . '</p>';
            echo '</div>';
        }
        echo '</div>';
    }
    echo '</div>';
}

回复功能实现

在评论下方添加回复表单:

php实现评论回复

if (isset($_GET['reply_to'])) {
    echo '<form method="POST" action="">
        <input type="hidden" name="parent_id" value="' . (int)$_GET['reply_to'] . '">
        <textarea name="content" placeholder="写下你的回复..."></textarea>
        <button type="submit">提交回复</button>
    </form>';
}

安全注意事项

  1. 对所有用户输入使用htmlspecialchars()过滤
  2. 使用预处理语句防止SQL注入
  3. 验证用户权限,确保只有登录用户才能评论
  4. 对频繁操作实施限流措施

标签: php
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现定时任务

php实现定时任务

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

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…