[mp3_player]MP3 附件播放器热
69210
- MP3 附件播放器ID mp3_player版本 1.0.26插件制作者 bbs1org免费1914 行 / 77.7 KBHook / 路由 / 后台页在主题中直接播放 MP3 附件,支持播放列表、倍速播放和断点续听。app/plugins/mp3_player/plugin.php开发日志已有 3 条
个人独立维护项目。
淘帖专辑官方安装插件合集主楼 插件质量报告
插件:
mp3_playerHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 sidebar.feature_links 首页/侧栏快捷功能 否 5 - - - - topic.after_render 首页/版块列表/主题查看逐条渲染 是(列表跳过) 5 读 修正❗️ - - 读 plugin_mp3_player_history topic.before_delete 主题删除操作 否 2 - - - 写 plugin_mp3_player_history 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
plugin_mp3_player_history字段 类型 可空 默认值 约束 id id 否 - 主键、自增 user_id uint 否 - 唯一 track_key key 否 - 唯一 topic_id uint 否 - - attachment_file key 否 - - filename string 否 - - position_ms uint 否 0 - duration_ms uint 否 0 - rate_milli uint 否 1000 - created_at uint 否 - - updated_at uint 否 - - 万能的插件啊
🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
- 流媒体路由 plugin.php:98-155
mp3_player_stream_page只做文件名白名单^[a-f0-9]{64}\.mp3$校验后直接 readfile,未做登录与主题/版块可见性校验:任何拿到内容哈希者都能读取 UPLOAD_DIR 中的 MP3(含隐藏/私密版块附件)。建议在路由内校验附件所属主题与版块可见性,或至少限制为登录用户。
⚡ 性能问题
- 红区违规:
topic.after_render(plugin.php:1900)→mp3_player_render_topic(:193)→mp3_player_history_for_tracks(:163)在渲染链内执行q('SELECT ...'),违反「渲染循环零数据库读取」。建议改为在 app.boot 或 topic.replies 预加载,渲染钩子只做内存读取。 mp3_player_extract_tracks(:85-91)在渲染路径内对每个附件做 is_file()/filesize() 文件系统 stat,附件多时每页重复,可做请求级缓存。
🐛 功能/规范缺陷
mp3_player_css_custom()(:380)整段未被 manifest 引用(:1898 用 mp3_player_css_refined),属死代码,建议删除。- CSS 多处写死字号与十六进制色值(如 :354
font-size:10px、:961-963#ef4444),应改用 var(--font-size-*)/var(--danger) 等语义变量。
✅ 修复优先级
- 红区 DB 读改预加载(性能,最重要);2) 流媒体路由补可见性校验(安全);3) 删除死代码、CSS 变量化(规范)。
- 流媒体路由 plugin.php:98-155
🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)
插件:MP3 附件播放器(mp3_player)v1.0.25
结论:已完成命名规范、生命周期(install/uninstall 幂等)、数据库跨库兼容、红区 Hook 零 DB 读、Hook 真实性(含核心与跨插件依赖核对)、SQL 注入风险、CSRF/权限校验、CSS 变量规范等项审查,未发现安全、性能或功能性问题。
旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。
版本 1.0.26 更新:
topic.after_render 在列表页逐行触发,且没有 list 拦截,每行含 mp3 的主题都执行 mp3_player_history_for_tracks()(一条对当前用户 (user,topic) 的历史查询)→ N 个 mp3 主题 = N 次。这
是本批唯一真·O(N) 循环违规。
修复还差个mp4,M3U8,视频多模态发布就补齐了😎
版本 1.0.26 更新:
修改js冲突