QBCMS(启步内容管理系统)是一款自研的轻量级 PHP 内容管理系统,基于原生 PHP 开发、无第三方框架依赖,采用 PDO 抽象层同时支持 MySQL 与 SQLite。系统开箱即用,适合企业官网、政务站点等内容型网站建设。
作者:金恒(QQ:372324643)
官网:www.qbcms.com
QQ交流群:527445836
功能特性
前台功能
-
栏目与文章:多级栏目、栏目别名、文章发布与编辑、浏览量统计、文章点赞与收藏
-
专题与标签:专题列表/详情页、标签云、标签文章列表
-
单页:别名 URL 单页(如
/page/about/) -
留言与评论:留言板(分类、审核)、文章评论(审核)
-
会员系统:注册/登录/找回密码、个人中心(资料、我的评论、我的留言、收藏、点赞)
-
会员投稿:创建/编辑/删除投稿,后台审核
-
相册(内置相册插件):相册封面墙、相册详情、单图浏览、私密相册(仅会员可见)
-
站内搜索:支持文章/作者/评论搜索,范围由后台配置控制
-
友情链接:前台申请、后台审核
-
Sitemap:动态生成
sitemap.xml -
动态数据 API:文章正文、浏览量、评论数、点赞/收藏数等接口,供静态 HTML 页面 AJAX 注入实时数据
后台功能
-
控制台:站点概况与快捷入口
-
内容中心:栏目管理、发表/管理文章、专题管理、单页管理、标签管理、投稿审核、回收站
-
会员互动:会员管理、会员角色、评论管理、留言管理(含类别与设置)
-
站点展示:轮播图管理、友情链接、链接分组
-
系统工具:网站设置、操作日志管理(可按模块配置记录范围)、Hook 调试、数据库备份、静态 HTML 生成、上传管理、应用中心(插件)、系统更新
-
管理权限:管理员账号、管理角色,内置 RBAC 细粒度权限体系
-
模板标签:标签手册、标签生成器、自定义标签、模板在线编辑
基础能力
-
RBAC 权限 + 操作日志 + CSRF 防护 + 登录验证码 + 后台 IP 黑白名单
-
目录/文件安全防护(配置文件、数据库文件、上传目录脚本访问拦截)
-
插件系统(Hook 事件中心、ZIP 包一键安装)
-
在线升级(自动备份 → MD5 校验 → 增量覆盖)
-
静态 HTML 生成与模板/数据缓存
-
URL 伪静态(Apache / IIS / Nginx 均支持,未配置重写时也能工作)
运行环境
| 项目 | 要求 |
|---|---|
| PHP | 7.0 及以上(推荐 7.4+,支持7.0~8.5环境) |
| 必需扩展 | PDO(MySQL 或 SQLite 驱动至少其一) |
| 可选扩展 | ZipArchive(在线升级)、GD(验证码与图片水印;无 GD 时验证码自动降级为纯文本模式) |
| Web 服务器 | Apache / IIS / Nginx |
| 目录权限 |
install/、cache/、uploads/、data/ 需具备写入权限
|
| 依赖 | 零第三方依赖,无需 Composer |
快速安装
-
将程序文件上传至站点根目录;
-
确认
install/、cache/、uploads/、data/目录存在且可写(缺失时安装程序会自动创建); -
浏览器访问
/install/进入安装向导,按 4 步完成:
安装须知 → 环境检测 → 配置安装 → 完成; -
数据库选择:默认推荐 SQLite(免配置,自动生成
data/qbcms+随机或自定义后缀.db);如需高性能或已有 MySQL 环境,可切换为 MySQL 并填写连接信息; -
表前缀:默认
qbcms_,多站点共用同一数据库时可修改前缀区分; -
后台目录:默认
admin,建议安装时修改为自定义名称(如manage、houtai)以降低被扫描风险; -
安装成功后自动生成
config.php与data/、uploads/目录防护文件;安装完成系统会自动清理install目录,如清理失败请手动删除,防止他人重入安装向导; -
配置伪静态(可选但推荐):
-
Apache:使用根目录
.htaccess(已内置); -
IIS:使用根目录
web.config(已内置); -
Nginx:按
.htaccess规则等价转换——除真实文件外全部转发给index.php,并优先命中static/目录下生成的静态 HTML; -
未配置重写规则时,系统可通过
index.php?c=Xxx&a=index及 Router 的 REQUEST_URI 解析正常访问。
后台默认地址为 /admin/,登录后进入控制台。
目录结构
web/ ├── index.php 前台入口(安装检测、站点开关、验证码拦截、插件启动、路由分发) ├── config.php 主配置文件(安装程序生成,含数据库等敏感信息,禁止外部访问) ├── captcha.php 验证码图片请求 ├── .htaccess Apache:安全加固 + 伪静态规则 ├── web.config IIS:安全过滤 + URL Rewrite(含 static/ 静态命中优先) ├── admin/ 后台目录(目录名可通过 ADMIN_DIR 修改) │ ├── index.php 后台入口(登录校验、IP 网关、路由分发) │ ├── controllers/ 后台控制器(命名空间 adminc\) │ ├── views/ 后台视图 │ └── assets/ 后台静态资源(KindEditor / UEditor 编辑器) ├── app/ │ ├── Core/ 框架核心(Controller、Database、Model、View、Router、Helper、 │ │ Plugin、Hook、Log、Mailer、Watermark、StaticHtml、Updater、 │ │ Captcha、GuestbookTag 等) │ └── plugins/ 插件目录(内置相册插件 album;插件系统基础 SQL) ├── controller/ 前台控制器(命名空间 controller\) ├── model/ 数据模型(继承 \qbcms\Core\Model) ├── template/ 前台主题目录,每套主题一个子目录(默认主题 default,通过 │ DEFAULT_TEMPLATE 切换,主题可自带 member/ 覆盖会员中心模板) ├── static/ 静态资源与静态HTML生成目录(common/、member/等及生成页面) ├── cache/ 缓存目录(模板编译、轮播、标签等缓存) ├── data/ 数据目录(SQLite 数据库等,受防护文件保护,禁止直接 HTTP 访问) ├── uploads/ 上传目录(图片、附件、头像等,受防护文件保护,禁止脚本执行) └── install/ 安装向导(安装完成建议删除)
配置说明
config.php 由安装程序生成,常用常量如下:
| 常量 | 含义 | 说明 |
|---|---|---|
DB_TYPE
|
数据库类型 |
sqlite 或 mysql
|
|
|
MySQL 连接配置 | 仅 MySQL 模式使用 |
DB_SQLITE_PATH
|
SQLite 数据库文件路径 |
默认 data/qbcms.db,自定义后缀时为 data/qbcms_后缀.db
|
DB_PREFIX
|
数据表前缀 |
默认 qbcms_
|
ADMIN_DIR
|
后台目录名 |
可改为 manage、houtai 等
|
DEFAULT_TEMPLATE
|
默认前台主题 |
默认 default
|
DEBUG_MODE
|
调试模式 |
生产环境建议设为 false,避免错误信息外泄
|
SITE_URL
|
站点地址 | 留空时自动识别 |
URL_REWRITE
|
是否开启伪静态 |
开启后 url() 等生成伪静态链接,需服务器配置对应重写规则
|
QBCMS_VERSION
|
当前版本号 |
1.2.0
|
其余 APP_PATH、CACHE_PATH、UPLOAD_PATH、INSTALL_PATH、ROOT_PATH、STATIC_PATH、TEMPLATE_PATH、MEMBER_TEMPLATE_PATH 为路径常量,一般无需修改。
前台路由与 URL
系统支持伪静态 URL 与查询字符串两种形式。开启 URL_REWRITE 并配置重写规则后,主要 URL 如下:
| URL | 说明 | 控制器 |
|---|---|---|
/
|
首页 |
Home@index
|
/list-1.html、/list/1、/栏目别名/
|
栏目列表 |
List@index
|
/article-1.html、/article/1
|
文章详情 |
Article@index
|
/page/别名/
|
单页 |
Page@show
|
/topic/、/topic/别名/
|
专题列表 / 专题详情 |
Topic@index / Topic@show
|
/tag/、/tag/标签名/
|
标签云 / 标签文章列表 |
Tag@cloud / Tag@lists
|
/album.html、/album-1.html、/photo-1.html
|
相册封面 / 相册详情 / 单图浏览 |
Album@index / Photo@index(相册插件)
|
/guestbook.html
|
留言板 |
Guestbook@index
|
/search/关键词/
|
站内搜索 |
Search@index
|
|
|
会员中心 |
Member
|
/contribution/list、/contribution/create
|
会员投稿 |
Contribution
|
?c=Sitemap
|
生成 sitemap.xml
|
Sitemap@index
|
?c=Api&a=...
|
动态数据 API |
Api
|
/link/apply/
|
友情链接申请 |
Link@apply
|
模板引擎与标签
前台使用自研模板引擎(app/Core/View.php),支持 {qbcms:} 专属标签、{include:} 模板包含、{var:} / {raw:} 变量输出、{if} / {foreach} 条件与循环语法,以及 [field:xxx] 字段占位符。
常用标签示例:
| 标签 | 用途 | 常用参数 | 示例 |
|---|---|---|---|
{qbcms:arclist}
|
文章列表,最常用内容标签 |
cid、tid、num、by、order、page
|
{qbcms:arclist cid="1" num="10"}
|
{qbcms:article}
|
单篇文章 |
id
|
{qbcms:article id="1"}
|
{qbcms:catlist}
|
栏目列表 |
pid、num
|
{qbcms:catlist pid="0" num="10"}
|
{qbcms:category}
|
单个栏目 |
id
|
{qbcms:category id="1"}
|
{qbcms:slider}
|
轮播图 |
name、id
|
{qbcms:slider name="首页Banner"}
|
{qbcms:linklist}
|
友情链接 |
gid、num
|
{qbcms:linklist gid="0"}
|
{qbcms:tagcloud}
|
标签云 |
num
|
{qbcms:tagcloud num="30"}
|
{qbcms:topiclist}
|
专题列表 |
num
|
{qbcms:topiclist num="10"}
|
{qbcms:topic}
|
单个专题 |
id
|
{qbcms:topic id="1"}
|
{qbcms:page}
|
单页内容 |
id、alias
|
{qbcms:page alias="about"}
|
{qbcms:guestbook}
|
留言列表 |
num
|
{qbcms:guestbook num="10"}
|
{qbcms:guestbook_form}
|
留言表单 |
class
|
{qbcms:guestbook_form}
|
{qbcms:custom}
|
自定义标签(后台配置) |
name
|
{qbcms:custom name="hot_articles"}
|
{include:header.html}
|
包含模板(最多 3 层嵌套) |
file
|
{include:header.html}
|
{qbcms:site_name} 等
|
站点变量 |
site_name、site_logo、site_keywords 等
|
{qbcms:site_name}
|
/ {raw:xxx}
|
输出控制器变量 |
page_title、pagination、breadcrumb 等
|
|
{if $var} / {foreach $list as $item}
|
条件分支 / 循环 | — |
{if $is_top}...{else}...{/if}
|
[field:xxx length=N]
|
字段占位符(可截字) |
length
|
[field:title length=20]
|
|
分页栏 | — |
|
后台「模板标签 → 标签手册」内置全部标签参数与示例的可视化文档;「标签生成器」可交互式生成标签代码;「自定义标签」支持在后台配置数据源、条件与模板,并支持标签级缓存。
插件系统
-
插件存放于
app/plugins/,每个插件一个子目录,包含plugin.json(名称、标题、版本、依赖、权限声明、后台菜单、hooks)与Plugin.php(继承\qbcms\Core\Plugin); -
PluginManager负责扫描插件、安装(执行 SQL)、启用/停用(enabled.flag)、卸载(执行 uninstall SQL)以及 ZIP 包上传安装,支持依赖检测与版本兼容检查; -
提供 Hook 事件中心(Action / Filter,类似 WordPress),核心在关键点触发事件,插件注册回调实现扩展;插件也可通过 hooks 注册自定义模板标签;
-
内置「相册」插件示例:提供相册/相册照片数据表、相册与图片管理、私密相册(仅会员可见)、前台
{qbcms:album}挂件、后台菜单与plugin.album.*权限点。
后台管理
后台按业务分组的两级菜单(以通用版本为准):
-
控制台:仪表盘
-
内容中心:栏目管理、发表文章、文章管理、专题管理、单页管理、标签管理、投稿审核、回收站
-
会员互动:会员管理、会员角色、评论管理、留言管理、留言设置、留言类别
-
站点展示:轮播图管理、友情链接、链接分组
-
系统工具:网站设置、日志管理、Hook 调试、数据库备份、静态 HTML、上传管理、应用中心、系统更新
-
管理权限:管理员账号、管理角色
-
模板标签:标签手册、标签生成器、自定义标签、模板编辑
权限体系为「管理员账号 — 管理角色 — 权限点」三级 RBAC,后台控制器通过 hasPermission('perm_key') 控制操作权限,菜单按权限自动隐藏。
安全机制
-
目录防护:根目录
.htaccess/web.config禁止访问config.php、敏感扩展名(sql/db/sqlite/log/md/lock/bak/env/ini/yml/yaml等)与目录列表;data/、uploads/目录另有防护文件(安装时自动生成/补齐),阻止数据库文件与上传目录脚本被直接 HTTP 访问; -
认证安全:管理员与会员密码均使用
password_hash存储、password_verify校验;后台登录默认开启验证码;支持后台 IP 黑白名单;后台目录名可自定义防扫描; -
请求安全:会话统一安全参数并生成 CSRF Token,写操作校验;前后台控制器/方法名均做白名单校验,防止类名注入;输入统一过滤、输出统一转义,模板
{raw:}输出限制为控制器预渲染的安全 HTML; -
权限安全:RBAC 权限点控制前后台操作;支持文章会员阅读权限、私密相册等前台权限;
-
运维安全:安装锁
install/.installed阻止重复安装;安装完成自动清理install目录;config.php含数据库密码等敏感信息,禁止提交到公开仓库或暴露给第三方。
在线升级、备份与静态化
-
系统更新:后台「系统更新」可手动、自动检测新版本(默认 24 小时降频缓存);升级前自动备份数据库与文件,下载升级包后校验 MD5 与 manifest,覆盖时排除
config.php、uploads/、data/、static/、cache/、install/等关键目录,并执行增量 SQL; -
数据库备份:后台一键备份、下载与恢复(
DatabaseBackup); -
静态 HTML:文章/栏目等变更时触发静态页面生成,输出至
static/目录,Web 服务器优先命中静态文件以减少动态请求;配合前台动态数据 API 注入评论区、浏览量等实时数据。
二次开发
-
命名空间与自动加载:
命名空间 目录 qbcms\Core\app/Core/controller\controller/adminc\admin/controllers/model\model/plugin\app/plugins/ -
前台控制器:新建
controller\XxxController继承\qbcms\Core\Controller,类方法即 action,通过 URLindex.php?c=Xxx&a=index&id=1或伪静态/xxx-1.html访问; -
后台控制器:新建
adminc\XxxController,可使用hasPermission()做权限控制,并在后台菜单中挂载; -
模型:继承
\qbcms\Core\Model并声明protected $table,即可获得常用 CRUD 能力; -
模板标签:可在模板引擎标签注册表扩展,或由插件通过 hooks 注册
template_tags;标签级缓存可通过后台自定义标签配置; -
Hook:使用
\qbcms\Core\Hook的 Action / Filter 机制在关键点插入自定义逻辑(如通知、日志、内容过滤); -
数据库:统一通过
Database::getInstance()取得 PDO 单例,SQL 兼容 MySQL 与 SQLite,多库 SQL 注意使用{PREFIX}风格或按数据库类型分支。
许可与声明
本项目开源协议:MIT
QBCMS 永久免费、开源,可免授权用于商业项目。
本软件仅供合法用途使用,按“原样”提供,不提供任何明示或默示的担保。使用者应自行承担因使用本软件产生的全部风险与后果;确保使用行为符合所在地法律法规,禁止利用本系统从事违法违规活动。安装即视为同意上述条款(详见安装程序「安装须知」)。
评论
暂无评论,快来发表第一条评论吧!