[invite_code]邀请码
- bbs1org2026-07-09邀请码ID invite_code版本 1.1.0插件制作者 bbs1org免费506 行 / 30.8 KBHook / 路由 / 后台页为注册提供邀请码与邀请奖励,支持邀请记录和积分兑换;可开启邀请链接模式,通过固定链接注册的用户自动归属邀请人。app/plugins/invite_code/plugin.php开发日志已有 2 条
个人独立维护项目。
淘帖专辑官方安装插件合集主楼 插件质量报告
插件:
invite_codeHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 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字段 类型 可空 默认值 约束 id id 否 - 主键、自增 code key 否 - 唯一 owner_user_id uint 否 0 - used_by_user_id uint 否 0 - is_reusable uint 否 0 - source string 否 'exchange' - cost_points uint 否 0 - note text 否 - - created_at uint 否 - - used_at uint 否 0 - - bbs1org2026-07-09
邀请码插件
新增邀请码插件。
支持后台启用 / 停用插件。
支持设置注册是否必须填写邀请码。
支持设置邀请成功后奖励邀请人积分数。
支持用户查看自己邀请到的用户列表。
支持用户使用积分兑换邀请码。
支持后台生成邀请码。
支持后台查看最近邀请码记录。
邀请成功通知中显示被邀请用户名,例如:你邀请的用户xxx已注册成功。 很好很强大
- bbs1org2026-08-12
可循环使用的邀请码,只记录最后一次使用的记录
邀请码设置已增加“邀请码获取说明”可选文本框。填写后会显示在注册页的邀请码输入框前,支持换行;未填写不显示。 🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
未发现明显问题(邀请码经 normalize 白名单过滤,页面输出均经 h() 转义,写操作有全局 CSRF 校验)。
⚡ 性能问题
未发现明显问题。
🐛 功能/规范缺陷
- 事务内调用自带事务函数:
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。 - 统计 Cookie 未签名:
invite_code_stats_cookie()(:162–178)仅校验格式与时间窗、无签名,invite_code_user_stats()(:191–196)直接用 Cookie 值渲染侧边栏“可用/已邀请”计数。虽仅影响本人显示,建议加 HMAC 签名或去掉 Cookie 缓存改为直接查询。 - CSS 硬编码字号:plugin.php:6 多处 font-size:13px/11px/17px/12px,应改用 var(--font-size-*)。
✅ 修复优先级
事务内积分调用 > Cookie 签名 > CSS 字号变量。
- 事务内调用自带事务函数:
🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)
插件:邀请码(invite_code)v1.0.8
🔒 安全问题
未发现明显安全问题。⚡ 性能问题
未发现明显问题。🐛 功能/规范缺陷
规范一致性建议:后台管理页函数体内未见显式调用核心 need_admin()(依赖核心 admin_page() 路由层统一鉴权兜底,当前不构成越权);涉及写操作时判断请求方式使用手写的 $_SERVER['REQUEST_METHOD'] === 'POST',效果等价于核心 require_post(),但写法与站内多数插件不一致。✅ 修复优先级
低优先级:建议在后台页面函数内补充显式 need_admin()/require_post() 调用,作为纵深防御,避免未来核心路由调整时失去这层保护;不影响当前功能与安全性。- bbs1org2026-08-29
旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。
- bbs1org2026-09-09
版本 1.1.0 更新:
后台(插件设置页)- 新增开关「开启邀请链接模式」,附说明文字;保存后写入配置 link_mode(旧配置自动取默认 '0',兼容)
- 「最近邀请码」列表中每用户的链接令牌行显示状态「邀请链接」;通过链接注册生成的归属记录显示为「已使用:用户名」(备注「通过邀请链接注册」)
前台邀请中心(链接模式开启时)
- 顶部新增「我的邀请链接」面板:每位用户一个固定专属链接(absolute_url(route_url('invite', ['t' => TOKEN])),懒生成、source='link' 可复用令牌,永久不变
),含只读输入框 + 「复制链接」按钮(JS 具名 IIFE、事件委托、clipboard API + execCommand 回退、1.5s「已复制」反馈)
- 隐藏「可用邀请码」网格与积分兑换入口;「我邀请到的用户」列表对链接归属记录显示「邀请链接」而非随机码
- 首页侧栏卡片在链接模式下显示「已邀请用户 + 单次邀请奖励」