用php开发cms应避开已停更的phpcms,直接从pdo+原生php搭建最小系统入手:建posts表(id、title、slug、content、created_at),用预处理查列表并渲染,通过$_get['id']查单条并转义输出,配合password_verify()和$_session实现登录态——这五六十行代码覆盖数据库交互、路由分发、会话控制三大基石。

phpcms 是一个已停止维护的国产 CMS 系统(官方于 2021 年底终止更新),不是 PHP 语言本身,也不是通用开发框架。现在想学「用 PHP 做 CMS」,直接学 phpcms 会走弯路——它代码耦合重、文档断档、安全补丁缺失,连 PHP 8.0+ 都不兼容。
别从 phpcms 源码开始学 CMS 开发
你看到的旧教程里那些 pc_base::load_sys_class()、template() 全局函数、手动拼 SQL 的写法,本质是十年前的工程实践。现在硬啃,等于拿诺基亚功能机逻辑去理解 Android App 架构。
真正要掌握的是底层能力,不是某个过时系统的调用习惯:
-
phpcms的路由靠index.php?m=content&c=index&a=lists这种 query string,而现代 CMS 都用 PATH_INFO 或重写规则(如/article/php-cms-vs-laravel) - 它的权限控制散落在各个
admin_*.php文件里,没抽象成中间件或策略类 - 模板层混着 PHP 逻辑(
<?php echo $title;?>)、没分离视图与数据,XSS 防御靠手写htmlspecialchars(),极易遗漏
从 PDO + 原生 PHP 搭一个最小可运行 CMS
先扔掉所有“CMS 框架”概念,用最简路径验证自己是否真懂数据流:
- 建一张
posts表,字段只要id、title、slug、content、created_at - 写一个
index.php:用PDO::prepare()查全部文章,foreach渲染列表,链接指向post.php?id=123 - 写一个
post.php:接收$_GET['id'],用预处理查单条,echo htmlspecialchars($row['content']) - 加个
admin/login.php:用password_verify()校验密码,登录成功后$_SESSION['user_id'] = $id
这五六十行代码跑通,你就踩实了 CMS 的三块基石:数据库交互、路由分发、会话控制。比看三天 phpcms 目录结构有用得多。
下一步该碰的真实技术点
等你能徒手写出带登录态的文章增删改查,再进阶也不迟。此时重点不是“学会某个 CMS”,而是识别出哪些能力在所有 CMS 里都复用:
-
slug生成逻辑:不能只靠str_replace(' ', '-', $title),得处理 Unicode、重复值、保留关键词(如admin) - 富文本内容存取:
content字段用TEXT还是MEDIUMTEXT?前端用textarea还是trix-editor?存之前要不要 strip_tags()? - URL 路由冲突:当
/about是固定页面,/about-me是文章 slug,怎么避免SELECT * FROM posts WHERE slug = 'about'查到空结果还继续执行? - 缓存失效时机:文章更新后,首页列表缓存、详情页缓存、RSS 缓存,哪个该删,哪个可留?
真正的难点从来不在“怎么调 phpcms 的 API”,而在于:当用户提交一个含 <script>alert(1)</script> 的标题,你的 htmlspecialchars() 是在入库前做、还是输出前做、还是两边都做?这种判断没有文档教,只能靠一次真实 XSS 漏洞修复经验记住。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











