当前位置:首页 > PHP

php评论功能实现代码

2026-02-13 22:16:59PHP

基础PHP评论功能实现

数据库表结构设计(MySQL)

CREATE TABLE comments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    post_id INT NOT NULL
);

评论提交表单

<form action="submit_comment.php" method="POST">
    <input type="text" name="username" placeholder="Your Name" required>
    <input type="email" name="email" placeholder="Your Email">
    <textarea name="content" placeholder="Your Comment" required></textarea>
    <input type="hidden" name="post_id" value="<?php echo $post_id; ?>">
    <button type="submit">Submit Comment</button>
</form>

评论处理脚本(submit_comment.php)

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = htmlspecialchars($_POST['username']);
    $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
    $content = htmlspecialchars($_POST['content']);
    $post_id = (int)$_POST['post_id'];

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

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

显示评论功能

<?php
$post_id = (int)$_GET['id'];
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$stmt = $db->prepare("SELECT * FROM comments WHERE post_id = ? ORDER BY created_at DESC");
$stmt->execute([$post_id]);
$comments = $stmt->fetchAll(PDO::FETCH_ASSOC);

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>';
}
?>

安全增强措施

输入验证和过滤

$username = trim(strip_tags($_POST['username']));
$content = trim(strip_tags($_POST['content'], '<a><strong><em><code>'));

防止SQL注入

$stmt = $db->prepare("INSERT INTO comments (...) VALUES (?, ?, ?, ?)");
$stmt->bindParam(1, $username, PDO::PARAM_STR);
$stmt->bindParam(2, $email, PDO::PARAM_STR);
$stmt->bindParam(3, $content, PDO::PARAM_STR);
$stmt->bindParam(4, $post_id, PDO::PARAM_INT);

分页功能实现

获取分页参数

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

修改查询语句

$stmt = $db->prepare("SELECT * FROM comments 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);

生成分页链接

php评论功能实现代码

$total = $db->query("SELECT COUNT(*) FROM comments WHERE post_id = $post_id")->fetchColumn();
$pages = ceil($total / $per_page);

for ($i = 1; $i <= $pages; $i++) {
    echo "<a href='post.php?id=$post_id&page=$i'>$i</a> ";
}

标签: 代码功能
分享给朋友:

相关文章

原生实现vue功能

原生实现vue功能

原生JavaScript实现Vue核心功能 使用原生JavaScript模拟Vue的核心功能需要理解响应式数据绑定、虚拟DOM和组件系统等概念。以下是关键实现方法: 响应式数据系统 通过Object…

vue实现收货功能

vue实现收货功能

Vue实现收货功能的基本思路 收货功能通常涉及前端界面交互、后端数据更新和状态管理。在Vue中,可以通过组件化开发实现这一功能,结合API调用与状态管理工具(如Vuex或Pinia)。 创建收货按钮…

vue 实现收藏功能

vue 实现收藏功能

实现收藏功能的基本思路 在Vue中实现收藏功能通常涉及前端交互与后端数据存储的结合。核心逻辑包括:用户点击收藏按钮时切换状态,并通过API将状态同步到后端数据库。 前端组件实现 创建收藏按钮组件,使…

vue实现注册功能

vue实现注册功能

实现注册功能的基本步骤 在Vue中实现注册功能通常需要结合前端表单和后端API交互。以下是常见的实现方式: 创建注册表单组件 <template> <div class="re…

js实现分页功能代码

js实现分页功能代码

分页功能实现方法 客户端分页(前端处理数据) 适用于数据量较小且已全部加载到前端的情况。 // 示例数据 const data = Array.from({length: 100}, (_, i)…

vue实现功能插件

vue实现功能插件

Vue 功能插件实现方法 插件基本结构 Vue 插件通常需要暴露一个 install 方法,该方法接收 Vue 构造函数作为参数。基本结构如下: const MyPlugin = { insta…