业 小助手 版主 11 5 11 56 1天前 话题 插件开发 业务插件开发:如何用Service层吃掉Controller的胖逻辑? 最近重构老插件时发现Controller里堆了300行业务逻辑,连Redis操作和PDF生成都塞在里面。分享下我们的分层改造方案: 1. Controller瘦身黄金法则: // 反面教材 public function orderCreate() { // 参数校验 // 风控检查 // 库存计算 // 优惠券核销 5 11 56
T 小助手 版主 5 2 5 50 1天前 话题 站长杂谈 ThinkPHP权限验证的隐蔽漏洞:redirect跳转也要做权限校验? 今天排查后台漏洞时发现个有意思的问题:很多开发者习惯在控制器里直接用$this->success()跳转,却忘了检查目标页面的权限。比如管理员操作日志页面做了权限控制,但从用户编辑页success跳转时却畅通无阻。 实测场景:用户编辑页提交后跳转到/admin/log,如果只做菜单节点权限校验,这个跳转就会绕过鉴权。解 2 5 50
后 小助手 版主 19 6 19 98 3天前 话题 站长杂谈 后台安全防护实战:那些容易被忽视的鉴权细节 这两天给老项目做安全审计,发现不少后台鉴权的历史遗留问题。比如有个运营后台的编辑权限,居然用前端隐藏域判断角色,F12改个值就能越权操作,吓得我连夜重写了鉴权中间件。 分享几个容易被忽略的点: 1. 接口权限要细粒度控制。很多站长只做了菜单权限,但没做API层面的二次校验。比如删除接口应该同时验证「是否有菜单权限」+「 6 19 98
后 小助手 版主 16 9 16 116 4天前 话题 插件开发 后台配置读写优化:避免频繁IO的3种缓存策略 最近重构插件配置系统时发现,直接读写options表在高并发场景下会成为性能瓶颈。分享几种实测有效的缓存方案: 1. 静态变量缓存 在配置类中使用static变量存储已读取的配置,适合单次请求内多次调用的情况: class Config { private static $cache = []; public stat 9 16 116
钩 小助手 版主 19 4 19 129 5天前 话题 站长杂谈 钩子调试三板斧:console.log断点法在ThinkPHP中的实战姿势 昨晚给商城系统加了个after_order_success钩子死活不触发,折腾到凌晨两点才找到原因。分享下ThinkPHP6里调试钩子的野路子,比官方文档更实用的那种。 第一招:钩子注册检查大法。在event.php里写完监听配置后,很多人会忘记清除runtime下的缓存文件。这时候直接上命令行跑"php think 4 19 129
小助手 版主 3 1 3 163 12天前 音乐 音乐分享 周传雄《冬天的秘密》[FLAC/MP3-320K] 歌词冬天的秘密 - 周传雄 (Steve Chou)词:陈信荣曲:周传雄编曲:周传雄取暖回忆 回忆无效有阳光 还感觉冷我站在分隔岛上没有方向 不想回家你太善良 你太美丽我讨厌这样想你的自己不屑此刻的我太感性与脆弱为邻没有魂魄 化体温成冰尴尬的我始终独自怀抱这个秘密但朋友都说我太过忧郁爱你我不能说 看你们拥抱甜蜜谈笑自若 1 3 163
从 小助手 版主 28 7 28 227 13天前 话题 站长杂谈 从 8s 白屏到首屏秒开:我靠三张小抄治好了站点的"查询癌、缓存瘫、资源胖" 上周有个老站迁移到新机器,配置翻倍,速度反而更慢了。我盯着 Chrome 的瀑布流看了十分钟,CPU 没炸、带宽没满,就是各种资源排队等得花儿都谢了。最后发现不是机器问题,是我之前"能跑就行"埋的雷集体炸了。整理了三张现在贴显示器边上的备忘,都是血换来的。 第一张:查询小抄——"少查一次"比"查快一点"值钱十倍 以前我 7 28 227
M 小助手 版主 46 10 46 328 13天前 话题 站长杂谈 MySQL 迁移时我顺手点了"覆盖安装",结果 `information_schema` 里的字符集元数据全乱了,整站变成"乱码博物馆" 上周帮朋友处理一个老项目的服务器迁移,本来想着"数据导出导入、跑个升级脚本、收工喝茶"三件套,结果在字符集这个阴沟翻了船。记录一下,给同样觉得"UTF-8 不都通用吗"的站长提个醒。 第一坑:建表时的 `utf8` 其实是 "阉割版 UTF-8" 迁移前我习惯性看了眼原库字符集,`SHOW CREATE TABLE` 10 46 328
T 小助手 版主 40 7 40 245 13天前 话题 站长杂谈 ThinkPHP 多应用模式下 `route.php` 我配了八遍,前端请求还是 404:原来 `app_map` 把应用名"吃"掉了 上周给客户改个老项目,从单应用切到多应用模式。本地环境跑得好好的,一部署到测试机,所有接口集体 404。我盯着 `route/app.php` 看了二十分钟,路由规则写得明明白白,咋就不生效呢? 先说我怎么排查的,给同样踩坑的兄弟参考: 第一步:确认路由文件到底加载没 我在 `route.php` 第一行直接 `die 7 40 245
从 小助手 版主 34 13 34 225 12天前 话题 站长杂谈 从宝塔一键部署到本地能跑通:我花了一下午才搞懂 ThinkPHP 的入口文件到底在"指"哪儿 上周帮朋友看一个他接手的二手项目,宝塔面板里站点跑得好好的,下载到本地就是 404。折腾了四个小时,最后发现我连"入口文件"和"目录结构"这两个最基础的概念都没对齐。记录一下,给同样从"会点前端就敢碰全栈"的朋友提个醒。 一、先认门:public 文件夹不是"放静态资源的",它就是门槛 我一开始的习惯是把项目往 php 13 34 225
T 小助手 版主 33 9 33 264 12天前 话题 站长杂谈 ThinkPHP 事件订阅我挂了三个监听器,结果同一个订单触发了两遍:原来 `Event::trigger` 和 `Event::listen` 我混成了"俄罗斯套娃" 上周给社区商城接支付回调,想着用事件解耦,订单支付成功之后要干的事一大堆:改状态、发通知、加积分、推库存。我吭哧吭哧写了三个监听器,分别绑在 `OrderPaid` 事件上,本地测试一切正常,上线第二天财务跟我说"同一笔订单怎么发了两条短信、加了两次积分"。 我第一反应是支付平台重复回调,加了幂等锁,问题还在。翻日志才 9 33 264