- 自助广告ID self_service_ads版本 1.0.0插件制作者 freepayzz免费554 行 / 40.7 KBHook / 路由 / 后台页支持九个固定位置、积分购买、审核退款和响应式展示的自助广告插件。app/plugins/self_service_ads/plugin.php本插件的完善需要你的积极参与。安装使用中遇到任何,不要抱怨,请直接回帖描述,帮助开发者完善。开发日志已有 1 条
个人独立维护项目。
主楼 插件质量报告
插件:
self_service_adsHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 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字段 类型 可空 默认值 约束 id id 否 - 主键、自增 request_key $code 否 - 唯一 user_id uint 否 - - slot $state 否 - - ad_type $state 否 - - title string 否 - - target_url text 否 - - image_url text 否 - - text_color $state 否 - - months uint 否 - - cost_points uint 否 - - status $state 否 - - starts_at uint 否 0 - ends_at uint 否 0 - review_note text 否 - - refunded INTEGER 否 0 - created_at uint 否 - - updated_at uint 否 - - @freepayzz 强行加页脚在底部的吗?这样的插件也有人用吗?
🔍 插件审查报告(对照《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注入站外作者链接,建议移除或默认关闭。
✅ 修复优先级
- 红区 DB 读/N+1(高);2. 外链注入(低);3. CSS 变量(低)。
旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。