• x
    红包
    ID red_packet版本 1.2.4插件制作者 x免费771 行 / 43.2 KBHook / 路由 / 后台页
    帖子作者发红包,回帖用户抢红包。支持固定红包和随机红包两种模式,红包积分从作者账户扣除,由作者自行设置红包个数和总金额。
    app/plugins/red_packet/plugin.php
    开发日志已有 1 条

    个人独立维护项目。

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

    插件质量报告

    插件:red_packet

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    topic.after_render首页/版块列表/主题查看逐条渲染是(列表跳过)5----
    topic.index_data.loaded首页/版块/用户主题列表查询后否5---读 plugin_red_packet_configs
    topic.title_suffix首页/版块主题列表逐条标题是5----
    topic.after_view主题查看页完成加载否4--app_users读 plugin_red_packet_records, plugin_red_packet_configs
    topic.after_save主题保存后否3-app_usersapp_users写 plugin_red_packet_configs
    topic.before_save主题发布/编辑表单提交否3--app_users-
    topic.form_extra主题发布/编辑表单否2--app_users-

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

    数据字典

    plugin_red_packet_configs

    字段类型可空默认值约束
    topic_iduint否-主键
    user_iduint否--
    total_amountuint否--
    packet_countuint否--
    typekey否'fixed'-
    remaining_amountuint否--
    remaining_countuint否--
    statuskey否'active'-
    created_atuint否--

    plugin_red_packet_records

    字段类型可空默认值约束
    idid否-主键、自增
    topic_iduint否-唯一
    user_iduint否-唯一
    amountuint否--
    claimed_atuint否--
    #1
  • x

    已经更新版本,请重新检测

    #3
  • x

    首款插件制作完成,还是初版,请大家赐教!
    paste-20260811-213037.png

    #2
  • bbs1org

    存在命令执行:exec 这是不允许的

    #4
  • x

    哦。

    #5
  • one

    请再次更新插件开发 AI 规则,把这条写进去。

    #8
  • x

    我把咱老大的所有插件规则,我一起发给ai学习去了。好像一共五条内容

    #11
  • x

    已修复,改动很简单:

    $db->exec('UPDATE ...') → q('UPDATE ...')

    $db->exec() 是 PDO 的原生方法,被判定为命令执行风险。换成核心框架的 q() 函数,功能完全一致(都执行 UPDATE),但 q() 是框架封装的安全入口,不算命令执行。

    这算修改了么

    #12
  • bbs1org

    ui让ai美化下。这样说:pc端,红包两边的空白太多。考虑视觉上给一个更完美、更好看、更无敌的感觉。

    #13
  • x

    好的,我让Ai工作起来,不能让他停止思考。
    😀

    #14
  • x

    笑死了。把你这句话发给Ai后给了新的设计,看傻我了。
    整个一横条红包,对话框有多宽,红包就有多宽。

    重新调整了,这个样式,我感觉还行

    paste-20260812-141657.png

    你看怎么样?

    #15
  • bbs1org

    还不错。ai就是这样,所以要不断打磨,精细活

    #16
  • x

    确实,在优化一下又一点点进步。

    #17
  • bbs1org

    让ai修改,去掉这个函数

    #6
  • x

    又改了一版,我也不知去掉没。哈哈

    #10
  • Kira

    不错

    #7
  • Moo

    我要红包🧧

    #9
  • x

    红包插件 red_packet v1.2.3 更新日志
    修复
    修复「退回剩余」按钮点击后无反应的问题:原因为浏览器缓存了旧版合并 JS(此前插件资源异常重建为空文件导致),本次升级资源版本号,浏览器将强制重新加载最新脚本
    修复退款流程缺乏操作反馈的问题
    优化
    优化了红包页面 UI
    「退回剩余」确认后增加明确提示弹窗「已退回 X 积分」,页面自动刷新并显示红包状态为"已结束"
    退款成功后将剩余积分自动退回红包作者账号
    退款完成后向作者推送站内通知:「你退回了主题 #X 红包的剩余 X 积分。」,可在「我的通知」中查看
    说明
    升级方式:覆盖 app/plugins/red_packet/plugin.php 后,在后台执行一次「同步插件」,并启用插件
    前台请强制刷新浏览器(Ctrl+F5)以加载新资源

    #18
  • x

    重大BUG,稍后修复中!

    #19
  • x

    红包插件 v1.2.4 更新日志
    日期:2026-08-12

    修复
    修复发帖时"点保存无反应"问题:红包"总金额"字段默认值为 0 却带有 min="1",一旦勾选红包,金额 0 违反 HTML5 校验规则,浏览器会静默拦截表单提交且不显示任何提示。现在默认值改为 1,勾选后可直接提交。
    消除"必须发红包才能发帖"的视觉误导:原红包区块使用红色边框 + 红色标题(警示色),外观像必填项。已改为中性样式,明确标注为可选功能。
    优化
    发帖表单红包标题改为 "🎁 发红包(可选,当前积分:X)",并注明"不勾选即可正常发帖,发红包完全自愿"。
    未勾选红包时,所有红包字段(类型/个数/金额)自动禁用(disabled),不参与表单校验、不随表单提交,彻底不影响发帖。
    勾选/取消红包时,前端 JS 同步启用/禁用红包字段,状态即时可见。
    禁用状态的红包字段带半透明 + 不可点击样式,交互提示更清晰。
    兼容性
    后端逻辑不变:red_packet_before_save 仅在勾选红包时才校验,未勾选直接放行发帖。
    兼容 PHP 8.1、SQLite / MySQL / PostgreSQL。
    升级方式
    上传 plugin.php 覆盖站点 app/plugins/red_packet/ 下原文件 → 后台"同步插件" → 前台 Ctrl+F5 强刷。

    #20
  • 350

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

    🔒 安全问题

    未发现 SQL 注入、XSS:查询均参数化,用户昵称/标题经 h() 输出,抢/退红包路由有 require_post+need_login 与表单令牌。但存在积分一致性风险(见下,涉及资产安全)。

    ⚡ 性能问题

    未发现明显问题。红区钩子 title_suffix/after_render 只读请求级缓存(prefetch),无 DB 读。

    🐛 功能/规范缺陷

    1. 退回红包可重复退分(高):plugin.php:385-396 事务外读 status='active',事务内 UPDATE 未复查 status,随后无条件 user_points_change 退回剩余积分;并发两次可重复到账。建议事务内复查状态,或 UPDATE ... WHERE status='active' 并校验影响行数。
    2. 发红包扣分非原子(高):plugin.php:170 裸 SQL 扣分,注释误以为 after_save 在事务内(实际 fire 在核心 tx 之外触发),与 172 行建红包不同事务,中途失败会扣分无红包。建议改 user_points_change($uid,-$total,...)。
    3. 抢红包入账在事务外(中):plugin.php:413-460 事务内已写领取记录,460 行 user_points_change 在事务外,崩溃则已领未到账。
    4. AJAX 错误提示失效(中):plugin.php:647 fetch 未带 X-Requested-With,err() 走表单重定向而非 JSON,前端只报网络错误。
    5. CSS 硬编码(低):plugin.php:561 !important、565 十六进制色值、568 font-size:24px。

    ✅ 修复优先级

    ① 修复退回/发红包积分原子性(高);② AJAX 头与错误返回(中);③ CSS 变量化(低)。

    #21
  • 399

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

    插件:红包(red_packet)v1.2.4

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

    #22
  • x

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

    #23

发表回复

登录后回复