php教程技术文章
-
登录成功后应轮换 PHP 会话 ID 来防止会话固定,但不宜用 session_regenerate_id(true) 立即删除旧数据。本文用保留窗口、旧 ID 标记和严格模式解释怎样避免移动网络或并发请求导致刚登录就掉线。186 收藏 -
文章 · php教程 | 1星期前 | 时区 · 后端开发 · php教程 · 日期时间 · 不可变对象 · php 时区转换 DateTimeZone DateTimeImmutable setTimezone
PHP 中需要保留原始时间对象时,应使用 DateTimeImmutable::setTimezone() 返回目标时区的新对象。本文用可复现代码说明显示时区、时间点、输入校验,以及它和可变 DateTime 的区别。184 收藏 -
本文介绍在三表多对多关系(水果、桶、关联表)中,如何编写SQL精确查询同时包含指定种类及数量水果的桶,重点解决“仅含2个苹果和1个香蕉”这类复合条件匹配问题。 本文介绍在三表多对多关系(水果、桶、关联表)中,如何编写SQL精确查询同时包含指定种类及数量水果的桶,重点解决“仅含2个苹果和1个香蕉”这类181 收藏 -
本文从 PHP 项目中同步接口变慢的趋势信号出发,分析哪些场景适合队列化,哪些风险需要提前控制,并给出从请求内处理迁移到后台 Job Worker 的采用路径和观察指标。178 收藏 -
用 PHP Throwable 的 getTraceAsString 记录异常调用链,同时结合 getTrace、参数过滤和 error_log,避免把令牌、密码等敏感值直接写进线上日志。178 收藏 -
文章 · php教程 | 3天前 | 字符串 · 字符编码 · php教程 · mbstring · php encoding UTF-8 mb_substr mb_internal_encoding
PHP 中统一处理中文字符串时,mb_internal_encoding 负责提供 mbstring 默认编码,mb_substr 的 encoding 参数只覆盖当前截取调用。本文用 UTF-8、混合输入和 PHP 8 异常边界说明两者怎么选择。177 收藏 -
PHP 对象持久化从 __sleep/__wakeup 迁移到 __serialize/__unserialize 时,真正需要处理的是字段版本、缺失字段和不可信输入。本文用一个订单快照对象拆开保存格式、兼容恢复与验收边界。176 收藏 -
DateTimeImmutable 的 setTimezone() 不会改原对象,而是返回保留同一时间点的新对象。接住返回值,再按目标时区格式化,才能让订单、报表的业务日期稳定可控。175 收藏 -
文章 · php教程 | 2个月前 | PHP · MD5 · 登录安全 · password_hash · password_verify · password_hash password_verify 登录安全 PHP密码迁移 MD5迁移
老 PHP 项目常把密码存成 MD5。本文按完整工作流讲清楚如何不强制用户改密码:识别旧格式、兼容登录校验、登录成功后自动写回新哈希,并逐步清理旧密码格式。174 收藏 -
PHP curl_multi 适合把多个 HTTP 请求放进同一批次,但并发数、超时、句柄回收和失败重试必须一起设计。本文用一个可控批处理示例讲清请求收敛和验收边界。174 收藏 -
PHP 使用 ZipArchive 打包文件时,把 addFile 的第二个参数设为相对 entryname,就能去掉服务器目录前缀;本文进一步说明递归目录、路径分隔符、文件可读性和 close 失败的处理方式。168 收藏 -
PHP 默认文件会话在同一用户并发请求下容易因为会话锁排队,接口越慢越明显。优化思路不是简单换 Redis,而是先缩短会话锁持有时间,再把会话存储迁到 Redis,并补上 TTL、回退和监控信号。164 收藏 -
PHP 8.5 允许静态闭包和一等可调用出现在常量表达式中,属性参数因此可以直接承载校验器或处理器。本文从路由属性场景出发,拆开 PHP 8.4 与 8.5 的解析边界,并用 Reflection 和 CI 检查兼容性。164 收藏 -
PHP 8.2 提供的 ini_parse_quantity 能把 ini 风格容量解析成字节,但非法单位会发出警告并按兼容规则解释。本文用配置校验器拆开单位换算、整数溢出和上线验收边界。163 收藏 -
PHP Generator 使用 yield from 委托子迭代器时,外层遍历拿到的是 yield 值,子 Generator 的 return 值要等委托完成后通过 getReturn 读取。本文用可运行示例说明调用链、完成条件和常见误区。161 收藏