php 实现文章系统
实现 PHP 文章系统的基本步骤
数据库设计
创建一个数据库表用于存储文章数据,通常包含以下字段:
id:文章唯一标识,主键,自增title:文章标题,VARCHAR 类型content:文章内容,TEXT 类型created_at:创建时间,TIMESTAMP 类型updated_at:更新时间,TIMESTAMP 类型
SQL 创建表示例:
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
连接数据库
使用 PDO 或 MySQLi 扩展连接数据库,以下是 PDO 连接示例:
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_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' && isset($_POST['title'], $_POST['content'])) {
$title = $_POST['title'];
$content = $_POST['content'];
$stmt = $pdo->prepare("INSERT INTO articles (title, content) VALUES (?, ?)");
$stmt->execute([$title, $content]);
header("Location: index.php");
exit;
}
显示文章列表
从数据库获取文章列表并显示:
$stmt = $pdo->query("SELECT id, title, created_at FROM articles ORDER BY created_at DESC");
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($articles as $article) {
echo "<h3><a href='article.php?id={$article['id']}'>{$article['title']}</a></h3>";
echo "<p>Posted on: {$article['created_at']}</p>";
}
查看文章详情
根据 ID 获取单篇文章内容:
if (isset($_GET['id'])) {
$stmt = $pdo->prepare("SELECT * FROM articles WHERE id = ?");
$stmt->execute([$_GET['id']]);
$article = $stmt->fetch(PDO::FETCH_ASSOC);
if ($article) {
echo "<h2>{$article['title']}</h2>";
echo "<p>{$article['content']}</p>";
echo "<p>Last updated: {$article['updated_at']}</p>";
} else {
echo "Article not found";
}
}
更新文章
实现文章编辑功能:
if (isset($_GET['edit']) && isset($_GET['id'])) {
$stmt = $pdo->prepare("SELECT * FROM articles WHERE id = ?");
$stmt->execute([$_GET['id']]);
$article = $stmt->fetch(PDO::FETCH_ASSOC);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update'])) {
$id = $_POST['id'];
$title = $_POST['title'];
$content = $_POST['content'];
$stmt = $pdo->prepare("UPDATE articles SET title = ?, content = ? WHERE id = ?");
$stmt->execute([$title, $content, $id]);
header("Location: article.php?id=$id");
exit;
}
删除文章
实现文章删除功能:
if (isset($_GET['delete']) && isset($_GET['id'])) {
$stmt = $pdo->prepare("DELETE FROM articles WHERE id = ?");
$stmt->execute([$_GET['id']]);
header("Location: index.php");
exit;
}
安全注意事项
- 使用预处理语句防止 SQL 注入
- 对用户输入进行过滤和验证
- 实现用户认证和授权机制
- 对输出内容进行转义防止 XSS 攻击
扩展功能建议
- 添加分类和标签系统
- 实现分页功能
- 添加评论功能
- 实现文章搜索
- 添加图片上传功能
这个基本框架可以根据具体需求进行扩展和完善。







