• elm
    用户规则与标签
    ID userstags版本 1.8.1插件制作者 elm售价 20 积分1509 行 / 79.7 KBHook / 路由 / 后台页
    根据发帖量、积分、用户标签等规则自动管理用户分组,支持用户组最低要求自动降级、用户组标签、版面标签权限(AND/OR 模式)、标签管理和配置导入导出。用户组序号越小等级越高,晋升仅升级、降级仅降级。
    收费插件安装说明购买后点击“授权码”获取一次性授权码;在后台 > 插件广场点击在线安装或更新,并填写该授权码。已购买用户更新免费:每次在线安装或更新前,重新点击“授权码”获取新的一次性授权码即可,无需再次购买;也可直接下载新版后用后台“插件上传”更新。尊重并感谢他人劳动,请勿传播代码。
    app/plugins/userstags/plugin.php
    开发日志已有 6 条

    个人独立维护项目。

    • bbs1org
      bbs1org
      版本 1.8.1 15675d2afa80 更新:修正数据库兼容问题release
    • elm
      elm
      版本 1.8.0 4c90466b04b7 更新:增加后台Tab显示
    • elm
      elm
      版本 1.7.2 1119f9623245 更新:修复所有循环,修正权限bug。
    • elm
      elm
      版本 1.7.1 7275588007db 更新:权限问题修复。 涉及到index.php一行代码,如果要现在生效,需要手动修改。 ## index.php 修改说明 此修改为系统核心文件 `index.php` 的一行改动,需手动应用。 ### 定位 在 `topic_index_data()` 函数末尾,`return $data;` 之前: ```php // 搜索定位(约第 2769 行) ]; hook('topic.index_dat
    • elm
      elm
      版本 1.7.0 b6b3c06b1e74 更新:适配8.x版本论坛。
    • elm
      elm
      版本 1.6.3 07e959f96cf9 更新:旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。
    主楼
  • 质量报告

    插件质量报告

    插件:userstags

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    app.boot全站请求启动否5-app_usersapp_users, app_topics, app_replies, app_groups读 plugin_userstags_rules, plugin_userstags_forum_tags
    sidebar.feature_links首页/侧栏快捷功能否5----
    topic.index_data.load首页/版块/用户主题列表查询前否5--app_topics, app_users, app_groups读 plugin_userstags_forum_tags
    forum_group_allowed版块权限检查否4--app_users, app_groups读 plugin_userstags_forum_tags
    reply.after_save回帖保存后否3-app_usersapp_users, app_topics, app_replies, app_groups读 plugin_userstags_rules
    reply.before_save回帖发布/编辑表单提交否3--app_topics, app_users, app_groups读 plugin_userstags_forum_tags
    topic.after_save主题保存后否3-app_usersapp_users, app_topics, app_replies, app_groups读 plugin_userstags_rules
    topic.before_save主题发布/编辑表单提交否3--app_users, app_groups读 plugin_userstags_forum_tags
    user.after_save用户注册/资料保存后否3-app_usersapp_users, app_topics, app_replies, app_groups读 plugin_userstags_rules
    admin.tabs后台管理页标签栏(展示位置:后台Tab)否1----

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

    数据字典

    未检测到插件数据表声明。

    #1
  • bbs1org

    这个插件使用有点复杂。建议给个范例。

    #2
  • simdeu

    想像ns论坛那样设置积分多少后达到对应的级别。不知道怎么实现。uu能给你设置例子吗?

    #4
  • elm

    用户规则与标签插件 — 简单介绍

    它是做什么的?

    论坛里的用户通常分成不同的"组"(比如:访客、普通用户、版主、管理员)。不同组有不同的权限。

    这个插件帮你做三件事:

    1. 给用户贴标签

    你可以给每个用户贴上自定义标签,比如"老用户"、"付费会员"、"活跃分子"。一个用户可以有多个标签。

    你也可以给整个用户组贴标签,这样组里所有人自动继承这个标签。

    2. 设置自动升级规则

    你可以定规则,比如:

    • "发帖超过 10 篇 → 自动升级到资深用户组"
    • "积分达到 100 且有'付费会员'标签 → 升级到 VIP 组"

    用户满足条件后,系统会自动把他们调到对应的组,不用你手动一个个改。

    3. 按标签控制版块权限

    论坛里每个版块(板块)本来只能按用户组控制谁能看、谁能发帖。有了这个插件,你可以按标签来控制,比如:

    • "只有带'认证用户'标签的人才能在'精华区'发帖"
    • "带'VIP'标签的人才能看到'会员专区'"

    举个例子

    假设你开了一个论坛,想这样管理:

    • 新注册的人都是"新人"
    • 发满 5 个帖子自动变成"普通用户"
    • 你手动给信得过的人贴上"认证"标签
    • 开一个"深度讨论"版块,只有"认证"标签的人才能发帖

    用这个插件就能全部实现,而且升级是自动的,你只需要给少数人贴标签就行。

    在哪里操作?

    在论坛后台 → 插件 → 启用后会多出一个"用户规则与标签"的管理页面,所有设置都在那里完成,不需要改任何代码。

    #3
  • elm

    安装插件,点击管理就可以添加规则。2楼里面哪里没有说清楚吗?

    #5
  • elm

    更新:

    1. 界面优化
    2. 解除用户搜索三字符限制
    3. 修复用户标签面板只显示一个的bug
    4. 加入导入导出功能
    #6
  • one

    自动停用原因
    2026-08-09 11:33:50 TypeError: userstags_tag_override(): Argument #1 ($forum_id) must be of type int, false given, called in /www/index/index.php on line 683 (app/plugins/userstags/plugin.php:230)

    #7
  • 350

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

    🔒 安全问题

    低危 1 处:750 行 onclick="...confirm('…' . h($tag) . '…')",h() 只做 HTML 转义,单引号在属性解码后仍会进入 JS 字符串,标签名含单引号可跳出。因标签仅管理员可创建,实际为自 XSS,建议改为事件委托 + data-* 取值。其余 SQL 均参数化、输出均经 h()。

    ⚡ 性能问题

    • app.boot 每请求评估:341–349 行在 auto_promote 下对登录用户调用 userstags_eval_user(多次查询),虽有 300 秒 Cookie 节流仍有开销;userstags_all_tags(112–129 行)每次后台渲染全表扫描 app_users/app_groups。建议评估移入 cron 批量任务并加缓存。
    • 批量 N+1:966–971 行全量评估逐用户查询、1106–1109 行组积分调整逐用户 user_points_change、135–148 行标签增删逐行 UPDATE。建议分块 IN / 批量更新。

    🐛 功能/规范缺陷

    • 【重点】未命中规则即降级:325 行把无匹配用户目标组设为 default_group_id,332 行直接 UPDATE;auto_promote 默认开启,会覆盖站长手动分配的非默认分组(如 VIP)。建议"只晋升不降级"或仅对由本插件晋升过的用户降级,并加开关。
    • AND 模式未生效:后台 567–568 行提供"必须同时满足(AND)",但 209–223 行 userstags_check_forum_tags 恒按 OR(命中任一即通过)。建议实现 AND 分支或移除该选项。
    • 内联脚本与全局污染:805–819 行直接输出 <script> 并声明无前缀全局 _ugLast/ugTagAdd,违反"JS 只走 manifest assets 且加前缀/IIFE";多处内联 onchange="ugTagAdd(this)"。建议移入 assets、重命名并事件委托。
    • CSS 违反变量规范:1127–1128 行 font-size:12px/18px 等多处写死字号,且用非官方变量 var(--muted2),应改 var(--font-size-*) 与 --text-muted 等。
    • 版本号不一致:574 行后台硬编码 v1.5.2,manifest 却是 1.6.3,易误导用户。

    ✅ 修复优先级

    自动降级逻辑 → AND 模式 → 性能(cron/批量)→ 内联脚本 → CSS 变量 → 版本号。建议先处理降级风险再发布。

    #8
  • 399

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

    插件:用户规则与标签(userstags)v1.6.3

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

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

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

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

    #9
  • elm

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

    #10
  • elm

    版本 1.7.0 更新:
    适配8.x版本论坛。

    #11
  • elm

    版本 1.7.1 更新:
    权限问题修复。

    最后由 elm 编辑于 2026-09-01 15:30
    #12
  • idc

    @bbs1org 为什么之前下载过的现在下载还要积分呢?

    #13
  • elm

    因为之前插件没有收费功能,大家都免费。现在很多插件收费了,作者也得收点好下载别人的插件啊,哈哈哈。其实这个插件现在的版本还是有bug的,可以先不更新。

    #14
  • idc

    哦哦

    #15
  • elm

    版本 1.7.2 更新:
    修复所有循环,修正权限bug。

    #16
  • elm

    版本 1.8.0 更新:
    增加后台Tab显示

    #17
  • zaiwai

    bug更新好了吗

    #18
  • elm

    好了呀

    #19
  • zaiwai

    哈,这么晚还在弄。都是夜猫。

    #20
  • bbs1org

    版本 1.8.1 更新:
    修正数据库兼容问题

    #21

发表回复

登录后回复