当前位置:首页 > PHP

php实现评论

2026-04-03 06:41:41PHP

PHP 实现评论功能

数据库设计

创建评论表 comments,包含字段如下:

php实现评论

CREATE TABLE comments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    content TEXT 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 表单示例:

php实现评论

<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_connect.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_SESSION['user_id'])) {
    $user_id = $_SESSION['user_id'];
    $content = htmlspecialchars($_POST['content']);
    $article_id = intval($_POST['article_id']);

    $stmt = $pdo->prepare("INSERT INTO comments (user_id, content, article_id) VALUES (?, ?, ?)");
    $stmt->execute([$user_id, $content, $article_id]);

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

显示评论列表

<?php
require 'db_connect.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>' . htmlspecialchars($comment['content']) . '</p>';
    echo '<small>' . $comment['created_at'] . '</small>';
    echo '</div>';
}
?>

安全注意事项

  1. 使用预处理语句防止SQL注入
  2. 对输出内容使用 htmlspecialchars() 过滤
  3. 验证用户登录状态
  4. 对输入数据进行类型检查和过滤

分页功能实现

$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 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…