各位审核员好,本人申请入驻 Z-Blog 应用中心开发者,以下是我的作品介绍,请审核。
说明:本插件原名
media_library,v1.2.0 起统一at8_前缀更名为at8_media_library(避免与其他插件命名冲突),应用 ID 与目录名同步更新,以下为本帖最新内容,替代此前版本。
一、开发者信息
个人信息
二、作品简介
- 作品名称:媒体库 · 相册式附件管理
- 应用 ID / 目录名:
at8_media_library
- 当前版本:1.4.0
以相册(网格)形式集中管理 Z-BlogPHP 的全部附件(图片、视频、音频、文档、压缩包等),提供比系统默认附件管理更完善的查找、复用与账实核对体验,适合素材量大、需要频繁找图和清理冗余附件的站点。
主要功能
- 网格 / 列表两种视图自由切换,缩略图直达;图片、视频、音频均有预览,其余格式显示类型图标卡片;
- 全类型附件支持:上传、替换、删除、关联、插入正文对图片与各类文件一视同仁(不局限于图片);
- 按文章分类筛选:附件通过所属文章自动关联分类,一键筛出某分类下的全部附件;
- 多维筛选:文件类型(图片 / 视频 / 音频 / 文档 / 压缩包 / 其他)、上传月份、上传者、是否已关联文章、未关联附件虚拟分类;
- 关键词搜索(文件名 / 原始文件名 / 标题 / 说明);
- 拖拽或多选上传,实时进度;同名文件可整体替换更新(保留原附件地址不变);
- 详情侧栏:大图预览、视频/音频在线播放、尺寸与大小统计,一键复制 URL / HTML / Markdown 代码(非图片自动生成为链接代码);
- 可编辑标题、说明、图片 Alt(存于附件自定义域,不改动原表结构);
- 引用检测:检测「已关联文章」的正文里是否真的引用了该附件,区分「✅ 已在正文引用 / ⚠️ 仅关联未引用 / 关联文章不存在」,消除账实不符;
- 取消关联:已关联文章的附件可一键解除关联;
- 批量选择、批量删除(分批请求,单批失败不中断)、批量关联到指定文章;
- 文章 / 页面编辑页右栏「文章附件」面板:列出本文关联的全部附件,图片一键插入正文、其他附件一键插入下载链接(经
editor_api官方插入接口,兼容各编辑器);
- 灯箱大图浏览,支持键盘左右切换与 Esc 关闭;
- 统计概览:附件总数、图片数、占用空间、未关联文章数一目了然。
技术要点(对照上架规范)
- 数据查询全部使用系统自带 SQL 构造器与对象接口,条件数组参数化,不直接拼接 SQL;不建表、不修改系统文件;
- 兼容 MySQL / SQLite / PostgreSQL;
- 权限分层:查看要求管理员或
UploadMng权限,上传 / 替换 / 删除 / 编辑等写操作要求UploadAll或root,并统一校验 CSRF 令牌;
- 上传安全:硬拒绝可执行 / 服务端脚本扩展名(php、phar、exe、js、htaccess 等),硬排除可内嵌脚本格式(svg、svgz、xml、swf 等,防同源 XSS,系统自带上传不受影响);扩展名白名单跟随站点「允许上传的文件类型」设置;图片额外做内容双重校验(
getimagesize+ MIME 探测);文件名净化防\0与路径穿越;体积上限取upload_max_filesize与post_max_size较小值;
- 路径安全:所有磁盘操作经
realpath归一化并限定在附件目录内,防路径穿越;替换附件时校验目标文件真实存在且类型与原附件一致;
- 性能:汇总统计多级缓存,自动探测 Redis(ext/redis)→ APCu → Opcache 文件缓存,装了对应组件即自动启用,无组件时逐级降级;文件缓存原子写入、目录附
.htaccess拒绝直接访问、不使用unserialize;
- 前端输出全部转义,防存储型 XSS;
- 附件存储对齐系统
Upload类标准($u->Url/$u->Dir/$u->FullFile),URL 走系统 hook,自动兼容云存储接管类插件;删除走系统DelFile();
- 无任何加密代码、无混淆、不引用外站资源(CDN / 远程 JS / 远程字体一律没有);
- 卸载插件不删除任何已上传的附件文件与数据库记录。
三、效果截图
- 相册网格总览——顶部实时统计(全部附件 / 图片数 / 占用空间 / 未关联文章),类型、分类、月份、上传者、使用状态多维筛选,缩略图卡片带尺寸徽章与分类标签,PDF 等文档显示类型卡片
- 按文章分类筛选——选择分类后一键筛出该分类下的全部附件,底部显示结果计数
- 附件详情与引用状态检测——右侧详情抽屉:大图预览、URL / HTML / Markdown 一键复制、类型 / 尺寸 / 上传信息、文件状态、关联文章数与引用状态实时检测(⚠️ 仅关联未引用等异常状态高亮提示)、替换文件与删除操作
- 文章编辑页「文章附件」面板——编辑文章 / 页面时右栏「管理 / 插入附件」一键打开弹窗,列出本文全部关联附件,卡片显示大小与引用状态(未引用黄色警示),图片点击「插入正文」直达编辑器
四、代码仓库
https://github.com/361611074/at8_media_library
五、更新记录(节选)
- 2026-09-18(v1.4.0)
- 按审核建议完成速查表规范项:58 个自定义函数与常量前缀统一为
at8_media_library_(对齐应用 ID);前端 JS 全部放弃var改用let;编辑页面板内联<style>/<script>外置为css/edit.css、script/edit.js(CSRF 令牌经 data 属性注入),动态渲染的内联style收敛为 class
- 优化 4 项:realpath 前缀判断补目录分隔符(防
/upload2相邻目录误判);卸载清理运行时cache/;API 未知操作提示去除双重转义;图片尺寸getimagesize()请求内缓存(key 含 mtime)
- 按审核建议完成速查表规范项:58 个自定义函数与常量前缀统一为
- 2026-09-18(v1.3.2)
- 修复审核反馈 A.01 项:debug 插件(开发模式)下 API 响应被错误页 HTML 污染——JSON 输出前的缓冲清理改为对齐官方
ApiResponse()的@ob_clean()思路:只清空缓冲内容、不删除任何缓冲层(保留 debug 插件等输出捕获工具层),输出 JSON 后逐层推送给客户端;debug 插件收尾时缓冲层仍在但已空,不再产生「无缓冲可删」E_WARNING,JSON 也不会被收尾清理连带丢弃(已模拟双层缓冲验证:响应为纯 JSON、零告警)
- 修复审核反馈 A.01 项:debug 插件(开发模式)下 API 响应被错误页 HTML 污染——JSON 输出前的缓冲清理改为对齐官方
- 2026-09-18(v1.3.1)
- 安全修复:文章搜索接口(关联下拉)增加状态过滤,非管理员仅可见「已发布 + 自己的」文章 / 页面,防草稿标题枚举;上传硬拒绝补充
.ini/.env(防.user.ini落盘利用);单次上传上限 30 个;编辑页面板插入正文 URL / Alt 二次转义;批量关联补审计日志
- 安全修复:文章搜索接口(关联下拉)增加状态过滤,非管理员仅可见「已发布 + 自己的」文章 / 页面,防草稿标题枚举;上传硬拒绝补充
- 2026-09-18(v1.3.0)
- 修复
GetPostList()误用官方签名导致媒体库页打开报错;版本号规则调整为十进制进位(原 1.2.10 更名发布为 1.3.0)
- 修复
- 2026-09-18(v1.2.9)
- 按审核规范五条自查后重构复用官方能力:上传落盘改用系统官方
Upload::SaveFile()(含云存储接管接口)、分类查询改用系统常驻$zbp->categories、文章搜索改用官方$zbp->GetPostList()、CSRF 优先官方CheckCSRFTokenValid()
- 修复配置项
perpage已定义未读取;移除未使用的version配置
- 修复
GetPostList()误用官方签名导致媒体库页打开报错
- 按审核规范五条自查后重构复用官方能力:上传落盘改用系统官方
- 2026-09-18(v1.2.8)
- 编辑页「文章配图」面板升级为「文章附件」:不再只展示图片,全部附件类型均可查看;图片一键插入正文,视频 / 音频 / 文档 / 压缩包等一键插入下载链接,卡片带类型图标与引用状态
- 修复类别筛选与统计口径不一致:
.svg在 MIME 缺失时图片筛选漏算
- 2026-09-17(v1.2.7):编辑页面板按钮靠右对齐,与右栏布局一致
- 2026-09-17(v1.2.6):精简编辑页面板,移除「上传图片」按钮(上传走编辑器自带功能)
- 2026-09-17(v1.2.5):修复编辑页弹窗被编辑器工具条 / 页面内容压住的层叠问题(遮罩挂载到 body 顶层 + z-index 拉满 + 弹窗期间隐藏工具条,三重保证)
- 2026-09-17(v1.2.4):弹窗样式改为独立作用域(不依赖后台环境,任何编辑器 / 主题下均正确居中遮罩显示,支持 Esc 关闭);面板按钮美化;列表勾选框缩小为 12px;修复「引用状态」未关联时语义错误,引用检测失败给出重试提示;统计缓存升级为 Redis / APCu / Opcache 多级缓存
- 2026-09-16(v1.2.3):新增详情抽屉「引用状态」检测;新增文章 / 页面编辑页右栏面板,可一键插入编辑器正文;按文章筛选时附带引用状态(单次查询,无 N+1)
- 2026-09-15(v1.2.2):修复编辑保存与批量关联后「未关联文章」统计未同步刷新;列表勾选框 20px → 16px
- 2026-09-15(v1.2.1):修复替换文件错误更新 PostTime 导致已发布文章附件链接 404 / 跨月替换文件缺失;批量关联弹窗重复弹出;批量删除单批失败中断后续批次;视频缩略图去冗余元素
- 2026-09-14(v1.2.0):应用 ID 与目录更名为
at8_media_library,统一 at8_ 前缀;新增「取消关联」按钮;新增「未关联附件」虚拟分类;批量删除可靠性修复(前端分批 20 个、后端单次 IN 查询消除 N+1、修复只删记录不删文件、不再误报「登录已失效」)
- 2026-09-15(v1.1.5):附件存储对齐系统
Upload类(Url / Dir / FullFile),删除走系统DelFile(),恢复替换文件扩展名一致性校验,统计缓存改 JSON 存储
- 2026-09-13(v1.1.4):上传类型跟随站点「允许上传的文件类型」设置,兼容多种附件路径存储格式,汇总统计增加缓存
- 2026-09-12(v1.1.3):安全加固——上传白名单排除可内嵌脚本格式、替换文件归属校验、文件名净化加强、接口统一要求登录 + 权限 + CSRF
- v1.1.2:修复按文章分类筛选报错,写操作安全校验完善
- v1.1.0:数据查询改为系统 SQL 构造器与对象接口,符合上架规范;统计与列表合并单次扫描,3 万+附件自动降级
- v1.0.0:首个版本
六、申请说明
- 已对照《注意事项速查表》完成自查:插件无加密、无混淆、无外站资源引用,接口有登录 + 权限 + CSRF 鉴权;
- 应用 ID 与目录名已统一为
at8_media_library,仓库名同步更新;
- 已按平台要求完成实名认证相关绑定(手机号、微信);
- 此前审核员提出的意见已逐条修改完毕(详见更新记录 v1.2.0 与 v1.2.1);
- 后续将根据审核员反馈继续逐条修改,并在本帖更新时附 Changelog。
请审核,谢谢!
最后于 1天前
被唐朝编辑
,原因:




