当前位置:首页 > PHP

PHP实现新闻评论

2026-02-16 00:57:12PHP

数据库设计

创建新闻表和评论表,新闻表存储新闻信息,评论表存储评论内容并关联新闻ID。

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

CREATE TABLE comments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    news_id INT NOT NULL,
    user_name VARCHAR(100) NOT NULL,
    comment TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (news_id) REFERENCES news(id)
);

连接数据库

使用PDO连接MySQL数据库,确保安全性。

$host = 'localhost';
$dbname = 'news_site';
$username = 'root';
$password = '';

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

显示新闻及评论

查询特定新闻及其关联评论,按时间倒序排列。

PHP实现新闻评论

$news_id = $_GET['id'] ?? 0;

$stmt = $pdo->prepare("SELECT * FROM news WHERE id = ?");
$stmt->execute([$news_id]);
$news = $stmt->fetch(PDO::FETCH_ASSOC);

$stmt = $pdo->prepare("SELECT * FROM comments WHERE news_id = ? ORDER BY created_at DESC");
$stmt->execute([$news_id]);
$comments = $stmt->fetchAll(PDO::FETCH_ASSOC);

提交评论处理

验证用户输入并插入新评论到数据库。

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submit_comment'])) {
    $user_name = htmlspecialchars(trim($_POST['user_name']));
    $comment = htmlspecialchars(trim($_POST['comment']));

    if (!empty($user_name) && !empty($comment)) {
        $stmt = $pdo->prepare("INSERT INTO comments (news_id, user_name, comment) VALUES (?, ?, ?)");
        $stmt->execute([$news_id, $user_name, $comment]);
        header("Location: news.php?id=$news_id");
        exit();
    }
}

前端展示

创建简单的HTML表单和评论列表。

PHP实现新闻评论

<h1><?= htmlspecialchars($news['title']) ?></h1>
<p><?= nl2br(htmlspecialchars($news['content'])) ?></p>

<h2>Comments</h2>
<form method="POST">
    <input type="text" name="user_name" placeholder="Your name" required>
    <textarea name="comment" placeholder="Your comment" required></textarea>
    <button type="submit" name="submit_comment">Submit</button>
</form>

<div class="comments">
    <?php foreach ($comments as $comment): ?>
    <div class="comment">
        <strong><?= htmlspecialchars($comment['user_name']) ?></strong>
        <small><?= $comment['created_at'] ?></small>
        <p><?= nl2br(htmlspecialchars($comment['comment'])) ?></p>
    </div>
    <?php endforeach; ?>
</div>

安全性增强

添加CSRF保护和输入验证。

session_start();

if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        die('CSRF token validation failed');
    }
}

在表单中添加CSRF令牌:

<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">

标签: 新闻PHP
分享给朋友:

相关文章

css制作新闻

css制作新闻

使用CSS制作新闻页面 新闻页面的CSS设计需要注重可读性、布局清晰和响应式适配。以下是关键步骤和代码示例: 基础布局结构 新闻页通常采用多栏布局,主内容区宽度较大,侧边栏可放置次要信息。使用Fle…

css新闻列表制作

css新闻列表制作

CSS新闻列表制作 新闻列表是网页中常见的元素,通过CSS可以轻松实现美观的排版效果。以下是几种常见的新闻列表制作方法: 基础新闻列表样式 使用无序列表 <ul> 和 <li&g…

新闻列表制作css

新闻列表制作css

新闻列表的CSS样式设计 新闻列表通常需要清晰、易读的布局,同时兼顾美观和响应式设计。以下是一些常见的CSS样式方案: 基础样式 .news-list { list-style: no…

PHP实现coap

PHP实现coap

PHP 实现 CoAP 协议 CoAP(Constrained Application Protocol)是一种专为物联网设备设计的轻量级协议,基于 REST 架构。PHP 可以通过以下方式实现 Co…

PHP实现HTML

PHP实现HTML

PHP实现HTML的方式 PHP作为服务器端脚本语言,可以直接嵌入HTML代码中生成动态网页内容。以下是几种常见实现方式: 混合编写 直接在.php文件中混合PHP与HTML代码: <!DO…

PHP实现预约

PHP实现预约

PHP预约系统实现方法 创建预约系统需要处理用户输入、数据存储和验证。以下是一个基本的PHP预约系统实现框架: 数据库表结构 CREATE TABLE appointments ( id…