• bbs1org
    邀请码
    ID invite_code版本 1.1.0插件制作者 bbs1org免费506 行 / 30.8 KBHook / 路由 / 后台页
    为注册提供邀请码与邀请奖励,支持邀请记录和积分兑换;可开启邀请链接模式,通过固定链接注册的用户自动归属邀请人。
    app/plugins/invite_code/plugin.php
    开发日志已有 2 条

    个人独立维护项目。

    • bbs1org
      bbs1org
      版本 1.1.0 dac4dd99e7bd 更新:后台(插件设置页) - 新增开关「开启邀请链接模式」,附说明文字;保存后写入配置 link_mode(旧配置自动取默认 '0',兼容) - 「最近邀请码」列表中每用户的链接令牌行显示状态「邀请链接」;通过链接注册生成的归属记录显示为「已使用:用户名」(备注「通过邀请链接注册」) 前台邀请中心(链接模式开启时) - 顶部新增「我的邀请链接」面板:每位用户一个固定专属链接(absolute_url(rrelease
    • bbs1org
      bbs1org
      版本 1.0.8 69831de333dc 更新:旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。
    主楼
  • 质量报告

    插件质量报告

    插件:invite_code

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    sidebar.feature_links首页/侧栏快捷功能否5----
    sidebar.stack全站侧栏组件栈否5---读 plugin_invite_codes
    register.form_extra注册表单否3--app_users读 plugin_invite_codes
    user.after_save用户注册/资料保存后回调内3---写 plugin_invite_codes 修正❗️
    user.before_save用户注册/资料保存前否3--app_users读 plugin_invite_codes

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

    数据字典

    plugin_invite_codes

    字段类型可空默认值约束
    idid否-主键、自增
    codekey否-唯一
    owner_user_iduint否0-
    used_by_user_iduint否0-
    is_reusableuint否0-
    sourcestring否'exchange'-
    cost_pointsuint否0-
    notetext否--
    created_atuint否--
    used_atuint否0-
    #1
  • bbs1org

    邀请码插件
    新增邀请码插件。
    支持后台启用 / 停用插件。
    支持设置注册是否必须填写邀请码。
    支持设置邀请成功后奖励邀请人积分数。
    支持用户查看自己邀请到的用户列表。
    支持用户使用积分兑换邀请码。
    支持后台生成邀请码。
    支持后台查看最近邀请码记录。
    邀请成功通知中显示被邀请用户名,例如:你邀请的用户xxx已注册成功。

    #2
  • x

    很好很强大

    #3
  • bbs1org

    可循环使用的邀请码,只记录最后一次使用的记录
    邀请码设置已增加“邀请码获取说明”可选文本框。填写后会显示在注册页的邀请码输入框前,支持换行;未填写不显示。

    #4
  • 350

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

    🔒 安全问题

    未发现明显问题(邀请码经 normalize 白名单过滤,页面输出均经 h() 转义,写操作有全局 CSRF 校验)。

    ⚡ 性能问题

    未发现明显问题。

    🐛 功能/规范缺陷

    1. 事务内调用自带事务函数:invite_code_after_user_save() 在 tx()(plugin.php:122)内调用 user_points_change()(:129)与 create_notification()(:130);invite_code_exchange_current_user() 同样在 tx()(:149)内调用 user_points_change()(:152)。违反规范④(tx() 内禁止调用自带事务函数,SQLite 下存在嵌套事务风险)。建议把积分变更与通知移出事务,或改为事务内条件 UPDATE。
    2. 统计 Cookie 未签名:invite_code_stats_cookie()(:162–178)仅校验格式与时间窗、无签名,invite_code_user_stats()(:191–196)直接用 Cookie 值渲染侧边栏“可用/已邀请”计数。虽仅影响本人显示,建议加 HMAC 签名或去掉 Cookie 缓存改为直接查询。
    3. CSS 硬编码字号:plugin.php:6 多处 font-size:13px/11px/17px/12px,应改用 var(--font-size-*)。

    ✅ 修复优先级

    事务内积分调用 > Cookie 签名 > CSS 字号变量。

    #5
  • 399

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

    插件:邀请码(invite_code)v1.0.8

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

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

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

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

    #6
  • bbs1org

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

    #7
  • bbs1org

    版本 1.1.0 更新:
    后台(插件设置页)

    • 新增开关「开启邀请链接模式」,附说明文字;保存后写入配置 link_mode(旧配置自动取默认 '0',兼容)
    • 「最近邀请码」列表中每用户的链接令牌行显示状态「邀请链接」;通过链接注册生成的归属记录显示为「已使用:用户名」(备注「通过邀请链接注册」)

    前台邀请中心(链接模式开启时)

    • 顶部新增「我的邀请链接」面板:每位用户一个固定专属链接(absolute_url(route_url('invite', ['t' => TOKEN])),懒生成、source='link' 可复用令牌,永久不变

    ),含只读输入框 + 「复制链接」按钮(JS 具名 IIFE、事件委托、clipboard API + execCommand 回退、1.5s「已复制」反馈)

    • 隐藏「可用邀请码」网格与积分兑换入口;「我邀请到的用户」列表对链接归属记录显示「邀请链接」而非随机码
    • 首页侧栏卡片在链接模式下显示「已邀请用户 + 单次邀请奖励」
    #8

发表回复

登录后回复