当前位置:首页 > 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
分享给朋友:

相关文章

基于vue实现新闻前台

基于vue实现新闻前台

实现Vue新闻前台的关键步骤 环境准备与项目初始化 使用Vue CLI创建项目,安装必要依赖如vue-router、axios、element-ui等。配置基础路由和页面结构。 新闻数据获取 通过a…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…