当前位置:首页 > PHP

php实现帖子回复

2026-02-15 06:35:29PHP

PHP实现帖子回复功能

数据库设计

创建帖子表和回复表,帖子表存储主贴信息,回复表存储回复内容及关联的帖子ID。

CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE replies (
    id INT AUTO_INCREMENT PRIMARY KEY,
    post_id INT NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (post_id) REFERENCES posts(id)
);

表单提交处理

创建回复表单,提交到处理脚本。表单需包含回复内容和关联的帖子ID。

php实现帖子回复

<form action="submit_reply.php" method="post">
    <input type="hidden" name="post_id" value="<?php echo $post_id; ?>">
    <textarea name="content" required></textarea>
    <button type="submit">提交回复</button>
</form>

回复处理脚本

接收表单数据并插入数据库。需进行数据验证和防SQL注入处理。

// submit_reply.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $post_id = filter_input(INPUT_POST, 'post_id', FILTER_VALIDATE_INT);
    $content = trim($_POST['content']);

    if ($post_id && !empty($content)) {
        $db = new PDO('mysql:host=localhost;dbname=forum', 'username', 'password');
        $stmt = $db->prepare("INSERT INTO replies (post_id, content) VALUES (?, ?)");
        $stmt->execute([$post_id, $content]);

        header("Location: view_post.php?id=" . $post_id);
        exit;
    }
}

显示回复内容

在帖子详情页查询并显示所有回复。

php实现帖子回复

// view_post.php
$post_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
if ($post_id) {
    $db = new PDO('mysql:host=localhost;dbname=forum', 'username', 'password');

    // 获取主贴
    $post = $db->query("SELECT * FROM posts WHERE id = $post_id")->fetch();

    // 获取回复
    $replies = $db->query("SELECT * FROM replies WHERE post_id = $post_id ORDER BY created_at DESC")->fetchAll();

    // 显示帖子及回复
    echo "<h1>{$post['title']}</h1>";
    echo "<p>{$post['content']}</p>";

    foreach ($replies as $reply) {
        echo "<div class='reply'>";
        echo "<p>{$reply['content']}</p>";
        echo "<small>{$reply['created_at']}</small>";
        echo "</div>";
    }
}

安全增强

使用预处理语句防止SQL注入,对输出内容进行转义防止XSS攻击。

// 输出转义
function escape($data) {
    return htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
}

// 在显示内容时使用
echo escape($post['content']);

分页功能

当回复数量较多时,添加分页支持。

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

$stmt = $db->prepare("SELECT * FROM replies WHERE post_id = ? ORDER BY created_at DESC LIMIT ? OFFSET ?");
$stmt->bindValue(1, $post_id, PDO::PARAM_INT);
$stmt->bindValue(2, $per_page, PDO::PARAM_INT);
$stmt->bindValue(3, $offset, PDO::PARAM_INT);
$stmt->execute();
$replies = $stmt->fetchAll();

标签: 帖子php
分享给朋友:

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现socket

php实现socket

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

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…