跳到主要内容
奇点CMS v0.4.66 · 官方网站 登录 / 注册 在线激活

百科模块说明(对标百度百科)

1. 存储型 XSS 防护:正文与摘要入库前统一经 encyclopediaSanitize() 白名单净化(管理员提交同样净化)——

百科模块说明.md 文档版本 v0.4.66 4 KB 更新于 2026-10-02

百科模块说明(对标百度百科)

版本:v1.0(2026-09-28 新增) 遵循《页面模块创建规范》:无 emoji 图标、封面仅图片 URL、CSRF 全覆盖、输出全转义、SQL 全参数绑定。

一、功能概览

能力说明
词条浏览频道首页(搜索/分类/特色词条/最新最热列表/分页)+ 词条详情页
词条详情概述框(摘要+封面右浮)、正文、自动目录(h2/h3 锚点,侧边 sticky)、标签、相关词条、编辑历史
用户贡献登录用户可创建词条(提交后进入待审核);本人可修改自己的待审核/被拒词条并重新提交
后台管理词条 CRUD、审核(通过/拒绝+拒绝原因)、特色词条标记、分类管理(双 Tab)
编辑历史每次创建/编辑保存正文快照与操作原因,词条页侧栏展示最近 8 条
入口前台导航「百科」、首页栏目类型 encyclopedia(热门词条区块)、后台侧边栏「内容管理 → 百科管理」

二、文件清单

文件职责
encyclopedia.php前台频道首页(搜索 q / 分类 cat / 排序 sort=latest,hot / 分页 page)
encyclopedia-entry.php词条详情页(?id=N;待审核/被拒词条仅本人与管理员可见;已发布词条浏览 +1)
encyclopedia-edit.php前台创建/编辑(requireLogin;普通用户提交进待审核,管理员直接生效)
admin/encyclopedia.php后台管理(tab=entries 词条 / tab=categories 分类;GET 快捷审核与删除均带 CSRF)
includes/fn-encyclopedia.php模块函数库(经 includes/auth.php 统一加载,前后台可用)
assets/css/encyclopedia.css模块样式(文件头含全站统一的 Emoji 禁用规则块)
index.php首页 encyclopedia 栏目分支(热门词条区块)
admin/homepage-sections.php栏目类型注册 'encyclopedia' => '百科词条'
database.sql三张表的 DDL + 默认分类种子(全新安装自动可用)

三、数据库设计

encyclopedia(词条)

  • title 全站唯一(uk_title);summary 概述纯文本;content 正文 HTML
  • cover 仅存图片 URL 或 uploads/ 相对路径(isValidEncyclopediaCover() 校验)
  • status:0=待审核 1=已发布 2=已拒绝(reject_reason 展示给作者)
  • is_featured 特色词条(频道首页与首页栏目展示);view_count / edit_count 计数

encyclopedia_categories(分类)

  • name 唯一;默认种子:人物/历史/地理/科技/文化/生活/娱乐/体育

encyclopedia_history(编辑历史)

  • 每次保存写入 action(create/edit)、reason、content 快照

四、安全与内容规范

  1. 存储型 XSS 防护:正文与摘要入库前统一经 encyclopediaSanitize() 白名单净化(管理员提交同样净化)—— 允许常规排版标签;a 仅留 href(http/https/站内相对路径,自动加 rel="nofollow");img 仅留 src(http(s) 或 uploads/、assets/ 路径)+alt;script/style/iframe/form 等连同内容整体删除;未知标签解包留文本。
  2. 审核流:普通用户任何提交(新建/修改)一律进入待审核;已发布词条前台只读(避免未审核内容上线或公开词条消失),管理员可在后台直接编辑。
  3. 权限:待审核/被拒词条仅创建者本人与管理员可见(404 对外);后台页 requireAdmin;所有写操作 CSRF 校验。
  4. 图标/封面:遵守全站 emoji 禁用规则,封面仅接受图片(≤2MB,JPG/PNG/GIF/WebP,等比缩放最长边 800px,存 uploads/encyclopedia/Y/m/)。

五、正文排版约定(编辑器为 HTML 文本域)

<h2>章节标题</h2>   <!-- 自动进入右侧目录(锚点 sec-N) -->
<h3>小节标题</h3>   <!-- 同上,目录二级缩进 -->
<p>正文段落</p>
<ul><li>列表项</li></ul>
<blockquote>引用</blockquote>
<table><tr><th>表头</th></tr><tr><td>单元格</td></tr></table>

六、已知边界

  • 词条重名由唯一索引 + 服务端预检双重拦截,提示直接编辑既有条目。
  • 编辑历史仅存正文快照(不含摘要/标签字段),满足追溯主诉求,控制存储成本。
  • functions.php 因混合换行受编辑保护,fn-encyclopedia.php 的加载挂在 includes/auth.php(前后台唯一公共入口),文件内有注释说明。

原始文件:docs/百科模块说明.md · 出于安全考虑,站点不直接暴露 docs/ 目录下的原始文件(其中含内部资料),请在交付包内查看全文。

全部文档
站点公告 官网试运行中,如需购买或试用请通过「联系我们」留言。