• 秦始黄
    修改用户名增强
    ID username_change版本 1.0.7插件制作者 秦始黄免费205 行 / 12.7 KBHook / 路由 / 后台页
    修改用户名消耗积分并限制修改间隔,支持密码确认、旧用户名保护和完整审计记录。
    app/plugins/username_change/plugin.php
    开发日志已有 1 条

    个人独立维护项目。

    • 秦始黄
      秦始黄
      版本 1.0.7 c428e03208fb 更新:旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。release
    主楼
  • 质量报告

    插件质量报告

    插件:username_change

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    profile.after_form个人资料编辑表单否3---读 plugin_username_changes
    user.before_save用户注册/资料保存前否3--app_users-
    user.username_reserved注册/用户资料用户名检查否3---读 plugin_username_changes

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

    数据字典

    plugin_username_changes

    字段类型可空默认值约束
    idid否-主键、自增
    user_iduint否--
    old_usernamekey否--
    new_usernamekey否--
    points_costuint否0-
    changed_atuint否--
    ipstring否--
    #1
  • bbs1org

    @秦始黄 这块ui让ai美化下,丢样式了吧
    ScreenShot_2026-08-10_120531_409.png

    #2
  • 350

    🔍 插件审查报告(对照《AI 开发规则》与开发者文档)

    🔒 安全问题

    未发现明显问题。修改用户名路由已做登录校验与 POST 限制,CSRF 由全站统一校验,密码验证、参数化 SQL、输出转义(h())均到位,积分扣减带余额下限防负分。

    ⚡ 性能问题

    未发现明显问题。资料页与保存钩子中的查询均非循环、单次执行,频率低。

    🐛 功能/规范缺陷

    1. 表名前缀:plugin.php:7 建表 plugin_username_changes,插件 ID 为 username_change,未严格符合 plugin_<id>_ 前缀规范,建议改为 plugin_username_change_log 之类。
    2. 字号写死:plugin.php:172 两处 font-size:12px 直接写数字,应改用 var(--font-size-xs)。
    3. 积分扣减:plugin.php:131 在事务内直接 UPDATE app_users SET points=points-?,符合“事务内不做嵌套事务”的要求,但因此未触发 user.points_changed 事件,依赖该事件的其他积分插件收不到变更,建议事务完成后补发该事件。

    ✅ 修复优先级

    字号变量 > 表名前缀 > 补发积分事件(均为低优先级,插件功能可用)。

    #3
  • 399

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

    插件:修改用户名增强(username_change)v1.0.7

    🔒 安全问题
    未发现明显安全问题。

    ⚡ 性能问题
    未发现明显问题。

    🐛 功能/规范缺陷
    规范一致性建议:后台管理页函数体内未见显式调用核心 need_admin()(依赖核心 admin_page() 路由层统一鉴权兜底,当前不构成越权);涉及写操作时判断请求方式使用手写的 $_SERVER['REQUEST_METHOD'] === 'POST',效果等价于核心 require_post(),但写法与站内多数插件不一致。

    ✅ 修复优先级
    低优先级:建议在后台页面函数内补充显式 need_admin()/require_post() 调用,作为纵深防御,避免未来核心路由调整时失去这层保护;不影响当前功能与安全性。

    #4
  • 秦始黄

    旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。

    #5

发表回复

登录后回复