技术 · 2 分钟阅读· 356 次阅读

这个博客是怎么搭起来的:纯 PHP 手写之旅

这个博客没有用 WordPress,也没有用任何框架——就是纯 PHP 手写的。聊聊为什么,以及怎么做的。

技术选型

组件 选择 理由
语言 PHP 8.2 服务器现成,性能好
数据库 MySQL 5.7 稳定够用
Web 服务器 Nginx 经典组合
Markdown Parsedown 单文件引入,零依赖

功能清单

虽然代码不多,但功能一点没少:

  • 文章管理:Markdown 写作、草稿、置顶、分类、标签
  • 评论系统:游客评论 + 后台审核 + 蜜罐反垃圾 + 速率限制
  • 阅读体验:文章目录(TOC)、阅读时长、代码高亮
  • 搜索:全文 LIKE 搜索
  • 归档:按年份的时间轴
  • 输出:RSS 订阅、sitemap.xml(SEO 友好)
  • 外观:亮色/暗色主题一键切换,跟随系统偏好
  • 安全:CSRF 防护、预处理语句防注入、登录失败限流

几个实现细节

文章目录是怎么生成的

用正则从渲染后的 HTML 里提取 h2/h3 标签,给每个标题生成唯一 id,同时构建目录树。前端用 IntersectionObserver 监听滚动,当前章节在侧边目录里高亮。

暗色模式的实现

CSS 变量定义两套主题色,<html data-theme="dark"> 一键切换。首次访问跟随系统偏好(prefers-color-scheme),用户手动切换后记到 localStorage。

评论反垃圾

三层防线:蜜罐字段(隐藏 input,机器人填了直接丢弃)→ 同 IP 60 秒限 1 条 → 人工审核后才展示。

总结

自己动手写一个博客,最大的收获不是省了授权费,而是每一行代码都知道为什么。下次想加功能,改起来也完全心里有数。

评论 (0)

发表评论