PHP $ _POST数组为空,$ _GET原封不动

时间:2016-02-07 16:17:59

标签: php mysql arrays forms post

我一直在寻找解决问题的时间。 我发现了几个类似的问题,但很少有这些修复适用于我,到目前为止还没有任何修复。

我通过帖子表单填充数据库,但数组变空了:

print_r($_POST);

这导致

  

Array()

index.php文件的完整代码:

    <?php

print_r($_POST);

?>

<!DOCTYPE html>
<html>
    <head>
        <title> Insert games </title>
    </head>
    <body>
        <form action="index.php" method="post">
            <label for="name"> Game Name </label>
            <input type="text" id="name" name="name">
            <input type="submit" name="submit">
        </form>
    </body>
</html>

那么我们应该做的是将name $_POST值发送到我可以打印的同一个文件。
它与$_GET完全正常,我知道我可以在不使用$_POST的情况下制作此特定应用程序。但是在本项目的后期,我希望能够使用$_POST获取更多敏感信息。

已经有几个调试代码被要求执行其他海报,这些是我在做同样的事情时得到的结果:

var_dump($_POST);

结果

  

array(0){}

$data = file_get_contents('php://input');
var_dump($data);

string(30) "name=TestGame&submit=Submit"中的结果 显然,帖子数据是可见的,但我仍然不知道如何使用这些数据以及为什么$_POST无法正常工作。

我在Windows 7上使用Xampp,Apache和MySQL处于活动状态。

如果有人能给我一些建议,我将非常感激

-Mick

3 个答案:

答案 0 :(得分:0)

尝试放action="$_SERVER['PHP_SELF']"并按提交按钮。

答案 1 :(得分:0)

您的代码没有任何问题。

  

数组([name] =&gt; test [提交] =&gt;提交)

检查您的Xampp设置。 您也可以尝试action =“/ index.php”。

答案 2 :(得分:0)

我找到了@felixsigl在本网站上不同帖子提供的一个很好的临时解决方法:Link

如下:

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;
}

    $_POST = (getRealPOST());

这使用php://input字符串并将其转换为$ _POST数组,然后可以正常使用。

我希望这可以帮助那些遇到同样问题的人。
如果有人确实发现$ _POST无法正常工作的原因,请告诉我。