当前位置:首页 > PHP

php实现文章系统

2026-02-15 18:04:21PHP

数据库设计

创建数据库表存储文章数据,常用字段包括文章ID、标题、内容、作者、发布时间等。示例SQL语句:

CREATE TABLE articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    author VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

连接数据库

使用PDO或MySQLi扩展连接MySQL数据库:

$host = 'localhost';
$dbname = 'article_system';
$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());
}

文章发布功能

创建表单提交文章数据并插入数据库:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = $_POST['title'];
    $content = $_POST['content'];
    $author = $_POST['author'];

    $stmt = $pdo->prepare("INSERT INTO articles (title, content, author) VALUES (?, ?, ?)");
    $stmt->execute([$title, $content, $author]);

    header("Location: index.php");
    exit;
}

文章列表展示

从数据库查询文章并展示:

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

foreach ($articles as $article) {
    echo "<h3>{$article['title']}</h3>";
    echo "<p>作者: {$article['author']}</p>";
    echo "<p>发布时间: {$article['created_at']}</p>";
    echo "<div>{$article['content']}</div>";
    echo "<hr>";
}

文章编辑功能

实现文章更新功能:

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

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update'])) {
    $id = $_POST['id'];
    $title = $_POST['title'];
    $content = $_POST['content'];
    $author = $_POST['author'];

    $stmt = $pdo->prepare("UPDATE articles SET title=?, content=?, author=? WHERE id=?");
    $stmt->execute([$title, $content, $author, $id]);

    header("Location: index.php");
    exit;
}

文章删除功能

实现文章删除功能:

if (isset($_GET['delete'])) {
    $id = $_GET['delete'];
    $stmt = $pdo->prepare("DELETE FROM articles WHERE id = ?");
    $stmt->execute([$id]);

    header("Location: index.php");
    exit;
}

安全防护措施

防止SQL注入和XSS攻击:

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

// 输出时过滤HTML标签防止XSS
echo htmlspecialchars($article['content'], ENT_QUOTES, 'UTF-8');

分页功能实现

添加文章列表分页功能:

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

$stmt = $pdo->prepare("SELECT * FROM articles ORDER BY created_at DESC LIMIT :offset, :perPage");
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 获取总页数
$total = $pdo->query("SELECT COUNT(*) FROM articles")->fetchColumn();
$totalPages = ceil($total / $perPage);

文件上传功能

实现文章图片上传功能:

php实现文章系统

if (isset($_FILES['image'])) {
    $targetDir = "uploads/";
    $targetFile = $targetDir . basename($_FILES["image"]["name"]);
    $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

    // 检查文件类型
    $allowedTypes = ['jpg', 'png', 'jpeg', 'gif'];
    if (in_array($imageFileType, $allowedTypes)) {
        move_uploaded_file($_FILES["image"]["tmp_name"], $targetFile);
        // 将文件路径存入数据库
        $stmt = $pdo->prepare("UPDATE articles SET image_path = ? WHERE id = ?");
        $stmt->execute([$targetFile, $articleId]);
    }
}

标签: 系统文章
分享给朋友:

相关文章

php实现文章

php实现文章

PHP实现文章管理功能 在PHP中实现文章管理功能通常涉及数据库操作、表单处理和页面展示。以下是实现文章管理的基本步骤: 数据库设计 创建articles表,包含字段如id、title、conten…

vue实现家教系统

vue实现家教系统

Vue实现家教系统的关键步骤 项目初始化与配置 使用Vue CLI创建项目框架,安装必要依赖如Vue Router、Vuex和Axios。配置基础路由和状态管理结构,确保项目具备SPA特性。 用户认…

用vue实现会员系统

用vue实现会员系统

使用Vue实现会员系统 项目初始化与依赖安装 创建一个新的Vue项目,安装必要的依赖: vue create member-system cd member-system npm install v…

vue实现图书购买系统

vue实现图书购买系统

Vue实现图书购买系统 项目结构设计 使用Vue CLI或Vite初始化项目,推荐目录结构: src/components/ 存放可复用组件(如图书卡片、购物车) src/views/ 存放页面级组…

react文章实现

react文章实现

React 文章实现方法 创建 React 项目 使用 create-react-app 或 Vite 初始化项目。例如: npx create-react-app article-app 或 n…

php实现题库系统

php实现题库系统

PHP实现题库系统的基本架构 数据库设计是题库系统的核心,需要创建题目表、用户表、试卷表等基础结构。题目表应包含题目ID、题目类型、题目内容、选项、答案、难度等字段。用户表存储用户信息,试卷表关联题目…