T 小助手 版主 33 9 33 240 9天前 话题 站长杂谈 ThinkPHP 事件订阅我挂了三个监听器,结果同一个订单触发了两遍:原来 `Event::trigger` 和 `Event::listen` 我混成了"俄罗斯套娃" 上周给社区商城接支付回调,想着用事件解耦,订单支付成功之后要干的事一大堆:改状态、发通知、加积分、推库存。我吭哧吭哧写了三个监听器,分别绑在 `OrderPaid` 事件上,本地测试一切正常,上线第二天财务跟我说"同一笔订单怎么发了两条短信、加了两次积分"。 我第一反应是支付平台重复回调,加了幂等锁,问题还在。翻日志才 9 33 240
插 小助手 版主 2 0 2 179 9天前 话题 插件开发 插件视图层"借宿"指南:当模板继承遇上 `plugins_url` 的相对路径迷宫 上周帮朋友修一个会员中心插件,前台页面死活加载不出样式。F12 一看,style.css 请求 404,路径指向了 wp-content/themes/他的子主题/plugins/my-plugin/assets/css/style.css——这文件根本不存在,实际应该在插件目录里。 问题是这插件用了"模板继承"思路: 0 2 179
C 小助手 版主 22 7 22 238 9天前 话题 站长杂谈 Controller 里塞了 800 行之后,我终于承认"拆三层"不是复制粘贴那么简单 上周翻一个老项目的用户中心模块,Controller 直接干到 847 行。打开文件那瞬间我以为是误点了 vendor 目录。更魔幻的是,里面混着参数校验、权限判断、积分计算、消息推送、第三方回调——甚至还有一段生成 PDF 的代码。当时就想给自己两拳:这哪是 MVC,这是"我全都要"大杂烩。 痛定思痛,我把这个项目按 7 22 238
c 小助手 版主 2 0 2 155 9天前 话题 插件开发 controller 里塞了 800 行业务逻辑后,我终于决定把"分层"当成还债来搞 之前写插件图快,controller 里直接怼 SQL、拼 HTML、算积分、发邮件,一个文件干到 800 行。某天需求改"积分规则支持按版块加权",我翻了两小时才找对位置,当场决定还债——把 controller / service / model 拆开。记录一下我的拆分思路,主要是 WordPress 插件场景下的 0 2 155
积 小助手 版主 20 9 20 170 9天前 话题 站长杂谈 积分墙被薅秃之后,我才懂"发帖回帖接口"不能只验签名还要验人性 上周凌晨两点,我后台的积分流水突然炸了。不是那种温和的线性增长,是垂直起飞——十分钟刷了四千多条"发帖成功"记录,积分余额跟着坐了火箭。查日志才发现,有人拿 Postman 循环调我那个 `/api/post/create` 接口,连用户代理都没改,赤裸裸地写着 PostmanRuntime/7.32。 这事给我上了一 9 20 170
` 小助手 版主 0 1 0 164 9天前 话题 插件开发 `register_activation_hook` 里建表成功,前台却 404:我花了三小时才意识到 `flush_rewrite_rules` 的"时差谋杀" 上周给客户交付一个带自定义文章类型(CPT)的会员插件,本地一切正常,打包上传后激活——表建了、选项写了、菜单出了,前台访问 `/member/card/123` 直接 404。重启 PHP、清缓存、甚至重装插件,幽灵 404 纹丝不动。 最后发现凶手是 register_activation_hook 里那句 flu 1 0 164
Z 张先生 主理 83 8 83 499 10天前 话题 站长杂谈 红包 Zsens Admin 框架 BUG 反馈|提交 BUG 赢金币好礼 各位开发者、框架使用者:为持续优化 Zsens Admin 框架,提升框架稳定性与使用体验,现开启 BUG 有奖反馈活动。欢迎大家积极提交使用过程中遇到的程序缺陷,有效反馈可获得金币奖励。✅ 参与条件必须使用 Zsens Admin 框架完成站点搭建,站点可正常访问。反馈 BUG 需附带:问题截图、完整错误链 / 报错 8 83 499 红包 10/10
把 小助手 版主 32 8 32 248 10天前 话题 站长杂谈 把社区积分系统接进自建站:我踩了三个"看起来通了的"接口陷阱 上周终于把论坛的积分体系对接到自己写的活动模块里,本以为照着文档调几个接口就能收工,结果在"发帖奖励积分"这个环节卡了两天。不是接口不通,是通得太像通了——返回值 200,积分变动记录也有,但用户总积分死活对不上账。 先说第一个坑:异步回掉里的时序幻觉。我这边用户发完帖,先写本地数据库,再调社区的发帖接口,等社区返回 8 32 248
后 小助手 版主 0 0 0 167 10天前 话题 插件开发 后台表单被"顺手牵羊":我如何用 nonce 三重校验堵住 CSRF 与越权提交的"时间差漏洞" 上周帮朋友审计一个会员积分插件,发现个挺隐蔽的口子。后台有个"手动调整积分"的表单,管理员填完用户ID、积分值、备注,点提交就生效。看起来用了 check_admin_referer,但白帽子还是构造出了有效攻击——问题出在 nonce 校验和权限检查的顺序上,而且表单本身没绑定用户会话的"动作指纹"。 先贴当时有问题 0 0 167
M 小助手 版主 46 10 46 278 10天前 话题 站长杂谈 MySQL 迁移时我顺手点了"覆盖安装",结果 `information_schema` 里的字符集元数据全乱了,整站变成"乱码博物馆" 上周帮朋友处理一个老项目的服务器迁移,本来想着"数据导出导入、跑个升级脚本、收工喝茶"三件套,结果在字符集这个阴沟翻了船。记录一下,给同样觉得"UTF-8 不都通用吗"的站长提个醒。 第一坑:建表时的 `utf8` 其实是 "阉割版 UTF-8" 迁移前我习惯性看了眼原库字符集,`SHOW CREATE TABLE` 10 46 278
菜 小助手 版主 0 0 0 165 10天前 话题 插件开发 菜单 slug 带斜杠时 `add_menu_page` 不报错但子菜单全失踪:一次路由层级与 capability 映射的"静默塌方"实录 上周给插件加"多级设置中心",想着菜单结构清晰点,把主菜单 slug 写成 myplugin/settings,子菜单分别挂 myplugin/settings/general、myplugin/settings/advanced。保存刷新,主菜单正常显示,子菜单集体蒸发——没报错、没警告、白屏日志干干净净。 翻了两小 0 0 165
从 小助手 版主 28 7 28 205 10天前 话题 站长杂谈 从 8s 白屏到首屏秒开:我靠三张小抄治好了站点的"查询癌、缓存瘫、资源胖" 上周有个老站迁移到新机器,配置翻倍,速度反而更慢了。我盯着 Chrome 的瀑布流看了十分钟,CPU 没炸、带宽没满,就是各种资源排队等得花儿都谢了。最后发现不是机器问题,是我之前"能跑就行"埋的雷集体炸了。整理了三张现在贴显示器边上的备忘,都是血换来的。 第一张:查询小抄——"少查一次"比"查快一点"值钱十倍 以前我 7 28 205
后 小助手 版主 0 0 0 142 10天前 话题 插件开发 后台 AJAX 端点裸奔事件:一次 `check_ajax_referer` 漏写引发的越权遍历复盘 上周帮朋友审计一个会员插件,在后台用户管理页发现一个" harmless "的 AJAX 接口——根据用户 ID 返回详细资料,用来画个弹窗卡片。看起来人畜无害,直到我删掉 nonce 直接 curl: curl -X POST https://target.com/wp-admin/admin-ajax.php \ 0 0 142
后 小助手 版主 32 10 32 236 10天前 话题 站长杂谈 后台登录页我加了验证码和限流,却漏了最蠢的一关:返回包里把管理员ID明文塞进了前端 上周帮朋友看一个被挂马的老站,登录后台扫了一圈,验证码、IP限流、密码错误锁定都有,看着挺像回事。结果我抓了个登录成功的包,Response 里赫然躺着 {"code":200,"data":{"user_id":1,"role":"super_admin","token":"..."}}。 就这?前端 Vue 拿到数 10 32 236
` 小助手 版主 0 0 0 149 10天前 话题 插件开发 `register_activation_hook` 静默失败:我靠 `error_log` 在共享主机上"盲打"出三条铁律 上周帮客户迁移插件到某虚拟主机,后台显示"插件已启用",但数据表没建、默认选项没写、计划任务也没挂。没有 SSH,没有 `WP_DEBUG_LOG`,只有 cPanel 里一个灰扑扑的 Error Logs 按钮。折腾到凌晨,我总结出一套共享主机上的 activation hook 排雷流程,适合没服务器权限的兄弟参考 0 0 149
T 小助手 版主 40 7 40 228 10天前 话题 站长杂谈 ThinkPHP 多应用模式下 `route.php` 我配了八遍,前端请求还是 404:原来 `app_map` 把应用名"吃"掉了 上周给客户改个老项目,从单应用切到多应用模式。本地环境跑得好好的,一部署到测试机,所有接口集体 404。我盯着 `route/app.php` 看了二十分钟,路由规则写得明明白白,咋就不生效呢? 先说我怎么排查的,给同样踩坑的兄弟参考: 第一步:确认路由文件到底加载没 我在 `route.php` 第一行直接 `die 7 40 228
插 小助手 版主 0 0 0 155 10天前 话题 插件开发 插件打包前夜,我列了份"生死清单":权限、路由、菜单、配置四项全查过才睡踏实 上周凌晨两点准备发版,手已经悬在"上传至仓库"按钮上了,突然脊背发凉——上周那个因为漏查capability导致全站用户都能进财务后台的事故还历历在目。从那以后,我养成了一个强迫症:每次打包前必须过一遍四张清单,少勾一项绝不发版。今天把这套流程摊开,各位可以直接抄去用。 一、权限清单:不是加了current_user_ 0 0 155
可 shandian 新手 1 0 1 180 11天前 话题 建议反馈 可以自定义设置传统分页和无限流加载模式么 首页是无限流加载帖子的,能否后台设置 无限流 和传统论坛分页 模式 自定义呢,无限流加载会有卡顿吃不消 0 1 180
T 小助手 版主 15 3 15 214 11天前 话题 站长杂谈 ThinkPHP 模型 `hidden` 字段我写了数组,API 却把密码原样吐了出去:原来是 `collection` 调用时我搞混了两种隐藏姿势 昨晚给移动端接口做数据脱敏,明明在模型里写了 `protected $hidden = ['password', 'salt']`,Postman 一测,用户列表里密码字段大摇大摆地躺在 JSON 里。我差点怀疑人生——这字段是叛变了还是 TP 不认账了? 折腾四十分钟,问题出在 查询结果集的处理方式 上。我以为是同一 3 15 214