当前位置:首页 > PHP

php评论功能实现

2026-01-28 19:32:06PHP

数据库设计

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

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

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,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (article_id) REFERENCES articles(id)
);

表单提交处理

创建评论提交表单,前端HTML示例:

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

后端处理脚本(submit_comment.php):

<?php
session_start();
require 'db_connection.php';

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

    $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);
    exit();
}
?>

评论显示实现

获取并显示评论的PHP代码:

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

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

安全性增强措施

对评论内容进行过滤处理:

function sanitize_comment($input) {
    $input = strip_tags($input); // 移除HTML标签
    $input = htmlspecialchars($input, ENT_QUOTES, 'UTF-8'); // 转换特殊字符
    return $input;
}

防止XSS攻击的HTML输出:

echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

分页功能实现

评论分页查询示例:

php评论功能实现

$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 c.article_id = ? 
    ORDER BY c.created_at DESC 
    LIMIT ? OFFSET ?
");
$stmt->execute([$article_id, $per_page, $offset]);
$comments = $stmt->fetchAll();

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

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

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php实现增删改查

php实现增删改查

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

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移除…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

uniapp实现选项卡功能

uniapp实现选项卡功能

实现选项卡功能的基本方法 在uniapp中实现选项卡功能通常需要使用uni-segmented-control组件或自定义样式结合swiper组件。以下是两种常见实现方式: 使用uni-se…

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备与绑定 准备一个包含所有数据的数组,并使用v-model或v-…