• freepayzz
    自助广告
    ID self_service_ads版本 1.0.0插件制作者 freepayzz免费554 行 / 40.7 KBHook / 路由 / 后台页
    支持九个固定位置、积分购买、审核退款和响应式展示的自助广告插件。
    app/plugins/self_service_ads/plugin.php
    本插件的完善需要你的积极参与。安装使用中遇到任何,不要抱怨,请直接回帖描述,帮助开发者完善。
    开发日志已有 1 条

    个人独立维护项目。

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

    插件质量报告

    插件:self_service_ads

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    page.before_render全站页面输出前否5---写 plugin_self_service_ads
    page.footer全站页面页脚否5----
    page.head全站页面 head否5----
    page.header全站页面页头否5---写 plugin_self_service_ads
    reply.after_render主题查看页/回帖列表逐条渲染是5--app_topics 修正❗️写 plugin_self_service_ads 修正❗️
    sidebar.stack全站侧栏组件栈否5---写 plugin_self_service_ads
    topic.after_render首页/版块列表/主题查看逐条渲染是(列表跳过)5--app_topics写 plugin_self_service_ads

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

    数据字典

    plugin_self_service_ads

    字段类型可空默认值约束
    idid否-主键、自增
    request_key$code否-唯一
    user_iduint否--
    slot$state否--
    ad_type$state否--
    titlestring否--
    target_urltext否--
    image_urltext否--
    text_color$state否--
    monthsuint否--
    cost_pointsuint否--
    status$state否--
    starts_atuint否0-
    ends_atuint否0-
    review_notetext否--
    refundedINTEGER否0-
    created_atuint否--
    updated_atuint否--
    #1
  • 蓝太阳

    @freepayzz 强行加页脚在底部的吗?这样的插件也有人用吗?

    #2
  • Frey

    +1,我也发现了,这不太好吧,作者辛辛苦苦开源的系统,都没强制加底部链接,这个插件强加,唉。。最起码给个开关

    #3
  • 350

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

    🔒 安全问题

    未发现明显 SQL 注入/XSS。URL 与颜色均白名单校验、内网图片地址被拒绝、积分扣减在事务内以 points>=? 条件原子完成,CSRF 由全局校验覆盖。

    ⚡ 性能问题(重要)

    • plugin.php:488 在 reply.after_render 红区钩子内对每个回帖执行 one('SELECT reply_count,reply_order FROM app_topics WHERE id=?'),属渲染循环 N+1 查询。
    • plugin.php:365 的 self_service_ads_active_rows() 经评论位渲染对每层/每个回帖多次 SELECT,且 self_service_ads_expire() 在渲染链内触发 UPDATE。

    建议在 topic.replies 或 app.boot 一次性预加载广告行与楼层计数到请求级缓存,渲染钩子只读内存。

    🐛 功能/规范缺陷

    • plugin.php:517-518 样式写死多组数字字号与 border-radius:5px/6px,应改用 CSS 变量。
    • plugin.php:395/400 在每页 page.head/page.footer 注入站外作者链接,建议移除或默认关闭。

    ✅ 修复优先级

    1. 红区 DB 读/N+1(高);2. 外链注入(低);3. CSS 变量(低)。
    #4
  • freepayzz

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

    #5

发表回复

登录后回复