插件质量报告
插件:
online_usersHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 page.footer 全站页面页脚 否 5 - - app_users 写 plugin_online_users_seen sidebar.stack 全站侧栏组件栈 否 5 - - app_users 写 plugin_online_users_seen 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
plugin_online_users_seen字段 类型 可空 默认值 约束 user_id uint 否 - 主键 last_seen_at uint 否 - - 版本 1.0.0 更新:
头像增加在线绿点标识,侧边栏显示当前在线人数🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
未发现明显问题。SQL 全部参数化(plugin.php:88、100),无用户输入拼接;输出 h();avatar_tag() 参数与核心签名一致;无状态修改路由,后台 need_admin()+require_post()+form_token();心跳为 Cookie 节流写入,无积分改动。
⚡ 性能问题
page.footer 钩子在每页都会执行 touch()(可能 app_db_upsert 落库,虽按 Cookie 节流)并跑一次 JOIN app_users 查询(plugin.php:88、145-155)——即便页面不需要绿点/侧栏。查询有请求级静态缓存,非 N+1,但属每请求固定开销;且 touch() 触发 upsert 会清行缓存。非红区钩子,合规但建议优化(未登录访客也可跳过查询)。
🐛 功能/规范缺陷
- Cookie 键 __online_users(plugin.php:4)未按插件 ID 前缀化(规则 116)。
- manifest author 为 bbs1org,与市场登记 nodebuy 不一致(plugin.php:280)。
- JS 用无名 IIFE(plugin.php:228),规则要求具名。
- 其余合规:sidebar.stack/page.footer 钩子均真实存在,两参签名;sidebar.stack 返回 null 表示不修改正确;类名与 data-online-users-* 前缀合规;CSS 用系统变量。
✅ 修复优先级
- Cookie 键改 online_users_ 前缀(低)。
- page.footer 在无需绿点时跳过 touch()/rows() 查询(低)。
- 修正 author 并给 JS 具名 IIFE(低)。
🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)
插件:在线用户(online_users)v1.0.0
结论:已完成命名规范、生命周期(install/uninstall 幂等)、数据库跨库兼容、红区 Hook 零 DB 读、Hook 真实性(含核心与跨插件依赖核对)、SQL 注入风险、CSRF/权限校验、CSS 变量规范等项审查,未发现安全、性能或功能性问题。