当前位置:首页 > PHP

php 个人博客实现

2026-02-16 07:32:08PHP

环境准备

安装PHP运行环境(如XAMPP、WAMP或单独安装Apache+PHP+MySQL)。确保PHP版本在7.4以上以获得更好的兼容性。MySQL用于存储博客数据,需提前创建数据库。

数据库设计

创建名为blog的数据库,设计核心表:

  • posts表:存储文章信息,字段包括id(主键)、title(标题)、content(内容)、created_at(发布时间)。
  • users表:管理后台用户,字段包括idusernamepassword(需加密存储)。
CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL
);

核心功能实现

连接数据库
创建config.php文件管理数据库连接:

<?php
$host = 'localhost';
$dbname = 'blog';
$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("Database connection failed: " . $e->getMessage());
}
?>

文章列表展示
创建index.php显示文章列表:

<?php
include 'config.php';
$stmt = $pdo->query("SELECT * FROM posts ORDER BY created_at DESC");
$posts = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html>
<head>
    <title>My Blog</title>
</head>
<body>
    <?php foreach ($posts as $post): ?>
        <h2><?= htmlspecialchars($post['title']) ?></h2>
        <p><?= nl2br(htmlspecialchars($post['content'])) ?></p>
        <small><?= $post['created_at'] ?></small>
        <hr>
    <?php endforeach; ?>
</body>
</html>

后台管理功能

用户登录验证
创建login.php处理登录逻辑(使用password_hash存储密码):

session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    include 'config.php';
    $username = $_POST['username'];
    $password = $_POST['password'];

    $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
    $stmt->execute([$username]);
    $user = $stmt->fetch();

    if ($user && password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        header("Location: admin.php");
    } else {
        echo "Invalid credentials";
    }
}

文章发布功能
admin.php中实现表单提交:

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    include 'config.php';
    $title = $_POST['title'];
    $content = $_POST['content'];

    $stmt = $pdo->prepare("INSERT INTO posts (title, content) VALUES (?, ?)");
    $stmt->execute([$title, $content]);
    header("Location: admin.php");
}
?>

安全与优化

  • 输入过滤:始终使用htmlspecialchars和预处理语句防止XSS和SQL注入。
  • 密码加密:注册时使用password_hash,登录时用password_verify校验。
  • 文件结构:建议按功能分目录(如/public放前端文件,/includes放PHP类库)。

扩展建议

  • 添加Markdown编辑器(如SimpleMDE)提升内容编辑体验。
  • 实现分页功能(SQL中使用LIMITOFFSET)。
  • 部署时配置HTTPS并限制敏感目录访问(如通过.htaccess)。

php 个人博客实现

标签: 个人博客
分享给朋友:

相关文章

vue实现静态博客

vue实现静态博客

Vue 实现静态博客的方法 使用 Vue 实现静态博客可以通过多种方式完成,以下是几种常见的方法: 使用 VuePress VuePress 是一个由 Vue 驱动的静态网站生成器,特别适合技术文…

vue node实现个人博客

vue node实现个人博客

Vue + Node.js 实现个人博客的关键步骤 技术栈选择 前端:Vue 3 + Vite + Pinia(状态管理) 后端:Node.js + Express/Koa + MongoDB/M…

react实现个人博客

react实现个人博客

使用React实现个人博客的步骤 初始化React项目 使用Create React App或Vite快速搭建项目基础结构。npx create-react-app my-blog 或 npm cre…

css制作博客

css制作博客

CSS制作博客的关键步骤 设计布局结构 博客通常采用经典的三栏布局:头部导航、主内容区和侧边栏。使用Flexbox或Grid布局实现响应式设计,确保在不同设备上正常显示。 .blog-contai…

css博客制作

css博客制作

CSS博客制作指南 基础结构搭建 使用HTML5的语义化标签构建博客框架,如<header>、<nav>、<article>、<section>和<…

博客css制作

博客css制作

CSS 制作博客的实用方法 布局设计 博客布局通常采用响应式设计,确保在不同设备上都能良好显示。常见的布局结构包括头部(导航栏)、主体内容区(文章列表或单篇文章)和页脚。 使用 CSS Grid…