首页  >  文章  >  后端开发  >  尽管 PHP POST 变量存在于 php://input 中,但为什么 $_POST 中缺少 PHP POST 变量?

尽管 PHP POST 变量存在于 php://input 中,但为什么 $_POST 中缺少 PHP POST 变量?

Linda Hamilton
Linda Hamilton原创
2024-10-30 06:44:02303浏览

Why are PHP POST variables missing from $_POST despite being present in php://input?

PHP POST 变量尽管存在于 php://input

简介:

当通过 POST 请求在 PHP 中处理表单提交时,可能会遇到奇怪的行为,即 $_POST 超全局中缺少某些值,即使它们通过 php://input 出现在原始请求中。

问题描述:

提交带有嵌套字段的大型 HTML 表单时会出现此问题。尽管表单数据已发送到服务器,但某些值可能无法填充到 $_POST 中。检查 php://input 发现这些值确实包含在请求中,但似乎在 $_POST 中被截断。

原因:

该行为归因于PHP 对包含点、空格、方括号等字符的 POST 字段的修改。这些字符之前已由已弃用的 register_globals 配置处理。

解决方案:

要解决此问题,您可以采用如下解决方法:

<code class="php">// Get real POST variables
function getRealPOST() {
    $pairs = explode("&amp;", 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>

此函数解析 php://input 中的原始 POST 请求,并使用原始字段名称重建 POST 变量,考虑到PHP 进行的字符替换。

以上是尽管 PHP POST 变量存在于 php://input 中,但为什么 $_POST 中缺少 PHP POST 变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn