当前位置:首页 > PHP

php实现评论

2026-02-13 23:03:03PHP

PHP 实现评论功能

要实现一个基础的评论功能,需要处理数据库交互、表单提交和显示逻辑。以下是实现步骤:

创建数据库表

创建一个名为 comments 的表,包含必要字段:

CREATE TABLE comments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    comment TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

数据库连接

创建 config.php 文件处理数据库连接:

<?php
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}
?>

评论表单

创建评论提交表单 comment_form.php

<form action="submit_comment.php" method="post">
    <input type="text" name="name" placeholder="Your Name" required>
    <input type="email" name="email" placeholder="Your Email" required>
    <textarea name="comment" placeholder="Your Comment" required></textarea>
    <button type="submit">Submit Comment</button>
</form>

处理表单提交

创建 submit_comment.php 处理表单提交:

<?php
require 'config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = htmlspecialchars($_POST['name']);
    $email = htmlspecialchars($_POST['email']);
    $comment = htmlspecialchars($_POST['comment']);

    $stmt = $pdo->prepare("INSERT INTO comments (name, email, comment) VALUES (?, ?, ?)");
    $stmt->execute([$name, $email, $comment]);

    header("Location: comments.php");
    exit();
}
?>

显示评论

创建 comments.php 显示所有评论:

<?php
require 'config.php';

$stmt = $pdo->query("SELECT * FROM comments ORDER BY created_at DESC");
$comments = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<?php foreach ($comments as $comment): ?>
    <div class="comment">
        <h4><?php echo $comment['name']; ?></h4>
        <p><?php echo $comment['comment']; ?></p>
        <small><?php echo $comment['created_at']; ?></small>
    </div>
<?php endforeach; ?>

安全增强

添加CSRF保护和输入验证:

// 在表单中添加CSRF令牌
session_start();
$token = bin2hex(random_bytes(32));
$_SESSION['token'] = $token;
?>
<input type="hidden" name="token" value="<?php echo $token; ?>">

// 在提交处理中验证
if ($_POST['token'] !== $_SESSION['token']) {
    die('Invalid CSRF token');
}

分页功能

实现评论分页:

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

$total = $pdo->query("SELECT COUNT(*) FROM comments")->fetchColumn();
$totalPages = ceil($total / $perPage);

$stmt = $pdo->prepare("SELECT * FROM comments ORDER BY created_at DESC LIMIT ? OFFSET ?");
$stmt->bindValue(1, $perPage, PDO::PARAM_INT);
$stmt->bindValue(2, $offset, PDO::PARAM_INT);
$stmt->execute();

回复功能

扩展数据库表支持回复:

ALTER TABLE comments ADD COLUMN parent_id INT DEFAULT NULL;

处理回复逻辑:

php实现评论

// 在评论显示中添加回复按钮
<button onclick="showReplyForm(<?php echo $comment['id']; ?>)">Reply</button>

// 显示回复表单
function showReplyForm(parentId) {
    document.getElementById('reply-form-' + parentId).style.display = 'block';
}

这个实现包含了评论系统的基本功能,可以根据需求进一步扩展。

标签: php
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

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

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php 购物车实现

php 购物车实现

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

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php搜索功能的实现

php搜索功能的实现

实现PHP搜索功能的方法 数据库搜索 使用SQL的LIKE语句进行模糊匹配,适用于简单的搜索需求。 $searchTerm = $_GET['search']; $query = "SELECT *…