当前位置:首页 > PHP

php实现新闻浏览

2026-02-16 12:53:44PHP

PHP实现新闻浏览功能

数据库设计

创建新闻表结构,通常包含以下字段:

CREATE TABLE news (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    publish_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    author VARCHAR(100),
    category VARCHAR(50)
);

连接数据库

使用PDO连接MySQL数据库:

$dbhost = 'localhost';
$dbname = 'news_db';
$dbuser = 'root';
$dbpass = '';

try {
    $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}

新闻列表展示

查询并显示新闻列表:

$stmt = $pdo->query("SELECT id, title, publish_time FROM news ORDER BY publish_time DESC");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo '<div class="news-item">';
    echo '<h3><a href="news_detail.php?id='.$row['id'].'">'.$row['title'].'</a></h3>';
    echo '<p>发布时间: '.$row['publish_time'].'</p>';
    echo '</div>';
}

新闻详情页

显示单篇新闻内容:

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

    if($news) {
        echo '<h1>'.$news['title'].'</h1>';
        echo '<p>作者: '.$news['author'].' | 分类: '.$news['category'].'</p>';
        echo '<div class="news-content">'.$news['content'].'</div>';
    } else {
        echo '新闻不存在';
    }
}

分页功能

实现新闻列表分页:

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

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

$stmt = $pdo->prepare("SELECT id, title FROM news ORDER BY publish_time DESC LIMIT :offset, :perPage");
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();

// 显示分页导航
for ($i = 1; $i <= $totalPages; $i++) {
    echo '<a href="?page='.$i.'"'.($page==$i?' class="current"':'').'>'.$i.'</a>';
}

安全防护

防止SQL注入和XSS攻击:

// 使用预处理语句防止SQL注入
$stmt = $pdo->prepare("SELECT * FROM news WHERE id = ?");
$stmt->execute([$id]);

// 输出内容时进行HTML转义防止XSS
echo htmlspecialchars($news['content'], ENT_QUOTES, 'UTF-8');

性能优化

添加缓存和索引:

php实现新闻浏览

-- 为常用查询字段添加索引
ALTER TABLE news ADD INDEX idx_publish_time (publish_time);
ALTER TABLE news ADD INDEX idx_category (category);

-- 使用缓存
$cacheKey = 'news_list_page_'.$page;
if(!$news = $cache->get($cacheKey)) {
    $news = $pdo->query("SELECT ...")->fetchAll();
    $cache->set($cacheKey, $news, 3600); // 缓存1小时
}

以上实现方案包含了新闻系统的基本功能,可根据实际需求进行扩展和优化。

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

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…