php教程技术文章
-
PHP PDO 使用预处理语句时,先将输入归一化,再用 PDO::PARAM_INT、PDO::PARAM_STR 和 PDO::PARAM_NULL 显式绑定,避免整数、字符串与 NULL 语义被隐式转换。407 收藏 -
开启 PHP session.use_strict_mode 后,旧系统可能因手工预设未初始化 Session ID 而读不到登录前状态。本文解释 Cookie、有效 Session 和严格模式的关系,并给出先启动会话、登录后轮换 ID 的改法。404 收藏 -
filter_var 返回 true 只说明 URL 结构符合 PHP 的校验规则,并不代表主机可解析、协议可用或域名属于业务白名单。本文用 PHP 示例拆开三层判断,补上安全的 host 白名单写法。403 收藏 -
PHP 开启 pcntl_async_signals 后,信号处理器可能在主流程中被调度。本文用 pending 状态和 busy 标记把回调变成轻量入口,避免刷新任务重入。402 收藏 -
PHP 8 中读取自定义 attributes,核心是先用 Reflection 获取 ReflectionAttribute,再按名称筛选,最后在需要时调用 newInstance() 得到属性对象。398 收藏 -
用 PDO::ATTR_DEFAULT_FETCH_MODE 在连接创建时统一默认返回形态,再用语句级 FETCH_* 覆盖特殊查询,避免项目里反复写 fetch 参数。395 收藏 -
文章 · php教程 | 4天前 | php教程 · PHP stream_socket_client 超时 PHP DNS 解析失败 PHP TCP 连接拒绝 stream_socket_client errno PHP 网络连接排查
PHP stream_socket_client 日志只写超时很难定位根因。本文用独立 DNS 检查加 TCP 连接回执的方式,区分解析失败、连接拒绝、连接超时和 connect 前失败,并给出可复查的 PHP 代码。395 收藏 -
用 PHP DateInterval 和 DateTimeImmutable 计算订阅到期日,拆开月末溢出、invert 负间隔与时间点比较的边界,避免续费日期悄悄偏移。391 收藏 -
PHP 的 SensitiveParameter 与 SensitiveParameterValue 可以让堆栈中的敏感参数显示为脱敏对象,但它不等于日志系统自动脱敏。本文用异常堆栈、调试输出和结构化日志三个场景说明标注方式、getValue() 边界与验收方法。387 收藏 -
parse_url() 不会替 URL 自动补上 80 或 443。本文用 PHP_URL_PORT、HTTP_HOST 和 SERVER_PORT 拆开缺失端口、显式默认端口与代理转发场景,给出可复现的判断代码和安全边界。387 收藏 -
PHP readonly 属性不是普通的只读提示,而是一次初始化后禁止重新绑定的语言约束。本文解释合法初始化、作用域、间接修改、对象内部可变性和克隆边界。387 收藏 -
说明 PHP mb_strtolower 处理土耳其语时为何不能依赖 locale,区分 mb_language 的职责,给出 I、İ、i、ı 的专用映射与码点验证方法。384 收藏 -
PHP 8.4 为用户定义的函数、方法和类常量提供 #[\Deprecated] 属性。本文用一个兼容旧调用方的 PHP 示例,说明如何标注替代方案、用反射核对元数据,并把弃用提示接入 CI。382 收藏 -
PHP 8.6 的 Autoconf 2.71 与 C11 构建要求,主要影响从 Git 源码生成 configure 的脚本;发布压缩包和数据库运行时依赖应分别处理。380 收藏 -
PHP 项目报 Class not found 时,先不要盲目重装依赖。本文用 App\ 映射到 src/ 的例子,按命名空间、目录、文件名、大小写、dump-autoload 和 class_exists 逐层核对,定位 Composer PSR-4 自动加载失效的具体位置。379 收藏