通过 POST 提交大型 HTML 表单时,PHP 中可能会缺少某些 $_POST 值。尽管通过 php://input 访问的原始请求正文中存在值,但仍会发生这种情况。
出现此问题的原因是 PHP 修改了字段名称中的某些字符,例如空格和点,以符合已弃用的 register_globals环境。因此,某些键可能会被更改并在 $_POST 中缺失。
要解决此问题,请考虑以下解决方法:
<code class="php">function getRealPOST() { $pairs = explode("&", file_get_contents("php://input")); $vars = array(); foreach ($pairs as $pair) { $nv = explode("=", $pair); $name = urldecode($nv[0]); $value = urldecode($nv[1]); $vars[$name] = $value; } return $vars; }</code>
例如,HTML 片段:
<code class="html"><input type="text" name="my_field.value" value="test"></code>
PHP 代码:
<code class="php">$my_field_value = $_POST['my_field.value'];</code>
以上是为什么 php://input 中存在某些 $_POST 值却丢失了?的详细内容。更多信息请关注PHP中文网其他相关文章!