• nodebuy
    在线用户
    ID online_users版本 1.0.0插件制作者 nodebuy免费289 行 / 14.4 KBHook / 后台页
    在线用户的头像右下角会亮起一个绿点,侧边栏还会显示当前在线人数和在线用户的头像。
    app/plugins/online_users/plugin.php
    开发日志已有 1 条

    个人独立维护项目。

    • nodebuy
      nodebuy
      版本 1.0.0 c50f9a95b098 更新:头像增加在线绿点标识,侧边栏显示当前在线人数release
    主楼
  • 质量报告

    插件质量报告

    插件:online_users

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    page.footer全站页面页脚否5--app_users写 plugin_online_users_seen
    sidebar.stack全站侧栏组件栈否5--app_users写 plugin_online_users_seen

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    plugin_online_users_seen

    字段类型可空默认值约束
    user_iduint否-主键
    last_seen_atuint否--
    #1
  • nodebuy

    版本 1.0.0 更新:
    头像增加在线绿点标识,侧边栏显示当前在线人数

    #2
  • 350

    🔍 插件审查报告(对照《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 会清行缓存。非红区钩子,合规但建议优化(未登录访客也可跳过查询)。

    🐛 功能/规范缺陷

    1. Cookie 键 __online_users(plugin.php:4)未按插件 ID 前缀化(规则 116)。
    2. manifest author 为 bbs1org,与市场登记 nodebuy 不一致(plugin.php:280)。
    3. JS 用无名 IIFE(plugin.php:228),规则要求具名。
    4. 其余合规:sidebar.stack/page.footer 钩子均真实存在,两参签名;sidebar.stack 返回 null 表示不修改正确;类名与 data-online-users-* 前缀合规;CSS 用系统变量。

    ✅ 修复优先级

    1. Cookie 键改 online_users_ 前缀(低)。
    2. page.footer 在无需绿点时跳过 touch()/rows() 查询(低)。
    3. 修正 author 并给 JS 具名 IIFE(低)。
    #3
  • 399

    🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)

    插件:在线用户(online_users)v1.0.0

    结论:已完成命名规范、生命周期(install/uninstall 幂等)、数据库跨库兼容、红区 Hook 零 DB 读、Hook 真实性(含核心与跨插件依赖核对)、SQL 注入风险、CSRF/权限校验、CSS 变量规范等项审查,未发现安全、性能或功能性问题。

    #4

发表回复

登录后回复