下划线PHP上的参数名称中的点符号已被替换

问题描述

我发送名为“param.name”的 POST 参数

如果我读 PHP://input 一切正常,但如果我尝试从数组 $_POST['param.name'] 中获取参数,它不存在,因为点被替换为下划线,我需要得到param 这种方式 $_POST['param_name'].

也许我应该调整 PHP 中的一些设置...

我使用 PHP 7.4.15

解决方法

这是 their official documentation 中提到的预期 PHP 行为。据我所知,由于与向后兼容性 ($_POST) 相关的原因,PHP 在解析 register_globals 超全局变量时会应用此规则。

php://input 显示您的实际参数名称的原因是因为这是一个原始输入流,显示尚未被 PHP 解析的数据。 $_POST 数据解析。

简而言之,避免在 PHP 输入参数命名中使用点符号或愿意实现自己的解析机制以支持它。