首页 文章

PHP $ _POST数组为空,但_GET完好无损

提问于
浏览
1

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

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

print_r($_POST);

这导致了

数组()

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

    尝试输入 action="$_SERVER['PHP_SELF']" 并按提交按钮 .

  • 0

    您的代码没有任何问题 .

    数组([name] => test [提交] =>提交)

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

  • 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无法正常工作,请告诉我 .

相关问题