当前位置:首页 > PHP

php实现新闻管理

2026-02-16 03:46:20PHP

数据库设计

新闻管理系统需要设计合理的数据库表结构。常见的表包括新闻表(news)、分类表(categories)和用户表(users)。

新闻表字段示例:

CREATE TABLE news (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    category_id INT,
    author_id INT,
    publish_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    status ENUM('draft', 'published') DEFAULT 'draft',
    FOREIGN KEY (category_id) REFERENCES categories(id),
    FOREIGN KEY (author_id) REFERENCES users(id)
);

分类表字段示例:

CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    slug VARCHAR(100) NOT NULL UNIQUE
);

连接数据库

使用PDO连接MySQL数据库:

$host = 'localhost';
$dbname = 'news_db';
$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("Connection failed: " . $e->getMessage());
}

新闻增删改查功能

新闻添加功能实现:

function addNews($title, $content, $categoryId, $authorId) {
    global $pdo;
    $stmt = $pdo->prepare("INSERT INTO news (title, content, category_id, author_id) VALUES (?, ?, ?, ?)");
    return $stmt->execute([$title, $content, $categoryId, $authorId]);
}

新闻查询功能实现:

function getNews($limit = 10, $offset = 0) {
    global $pdo;
    $stmt = $pdo->prepare("SELECT n.*, c.name as category_name 
                          FROM news n 
                          LEFT JOIN categories c ON n.category_id = c.id 
                          ORDER BY n.publish_date DESC 
                          LIMIT ? OFFSET ?");
    $stmt->execute([$limit, $offset]);
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

分类管理

添加分类功能:

function addCategory($name, $slug) {
    global $pdo;
    $stmt = $pdo->prepare("INSERT INTO categories (name, slug) VALUES (?, ?)");
    return $stmt->execute([$name, $slug]);
}

获取所有分类:

function getAllCategories() {
    global $pdo;
    $stmt = $pdo->query("SELECT * FROM categories ORDER BY name");
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

用户权限控制

简单的权限检查示例:

function checkPermission($userId, $requiredRole) {
    global $pdo;
    $stmt = $pdo->prepare("SELECT role FROM users WHERE id = ?");
    $stmt->execute([$userId]);
    $user = $stmt->fetch();
    return ($user && $user['role'] === $requiredRole);
}

前端展示

新闻列表页示例:

$newsList = getNews();
foreach ($newsList as $news) {
    echo "<article>
            <h3>{$news['title']}</h3>
            <p class='category'>{$news['category_name']}</p>
            <div class='content'>".substr($news['content'], 0, 200)."...</div>
            <a href='news_detail.php?id={$news['id']}'>Read more</a>
          </article>";
}

安全措施

防止SQL注入:

$stmt = $pdo->prepare("SELECT * FROM news WHERE id = ?");
$stmt->execute([$_GET['id']]);

XSS防护:

function safeOutput($string) {
    return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}

php实现新闻管理

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

相关文章

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开:…

php实现搜索功能

php实现搜索功能

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

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置…

php 购物车实现

php 购物车实现

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

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…