PHP$\u POST数组为空,但$\u将保持完整

PHP$\u POST数组为空,但$\u将保持完整,php,mysql,arrays,forms,post,Php,Mysql,Arrays,Forms,Post,我已经找了几个小时来解决我的问题。 我发现了几个类似的问题,但这些修复方法很少适用于我,到目前为止没有一个有效 我正在通过post表单填充数据库,但数组结果为空: print_r($_POST); 这导致 数组() index.php文件的完整代码: <?php print_r($_POST); ?> <!DOCTYPE html> <html> <head> <title> Insert gam

我已经找了几个小时来解决我的问题。 我发现了几个类似的问题,但这些修复方法很少适用于我,到目前为止没有一个有效

我正在通过post表单填充数据库,但数组结果为空:

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>
导致

数组(0){}

结果显示
string(30)“name=TestGame&submit=submit”
显然,post数据是可以通过它看到的,但是我仍然不知道如何使用这些数据以及为什么
$\u post
不能正常工作

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

如果有人能给我一些建议,我将不胜感激


-Mick

尝试放置
action=“$\u SERVER['PHP\u SELF]”并按下提交按钮。

尝试放置
action=“$\u SERVER['PHP\u SELF]”并按下提交按钮。

您的代码没有问题

数组([name]=>test[submit]=>submit)

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

您的代码没有问题

数组([name]=>test[submit]=>submit)

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

我发现@felixsigl在本网站的另一篇文章中提供了一个很好的临时解决方案:

内容如下:

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
string并将其转换为$\u POST数组,然后可以正常使用

我希望这能帮助像我一样有同样问题的人

如果有人发现了$\u POST无法正常工作的原因,请务必告诉我。

我发现@felixsigl在本网站的另一篇帖子上提供了一个很好的临时解决方案:

内容如下:

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
string并将其转换为$\u POST数组,然后可以正常使用

我希望这能帮助像我一样有同样问题的人


如果有人发现$\u POST无法正常工作,请一定要告诉我。

Wierd,您是否更改了PHP.ini文件?您是否有一个
htaccess
文件,其中有任何重定向/重写?@IvijanStefanStipić我见过类似的问题,PHP.ini文件以前也有问题。据说max_post_size(或类似的东西)应该是80M,“Read_Order”(名称也不是100%确定)应该是“egpc”,这两者都已经在我的php中了。ini@Andy我不太清楚你说的是什么意思?你能详细说明一下吗?@A-2-A它再次导致什么都没有,只是一个空数组,而$u POST应该在那里。维尔德,你是否更改了PHP.ini文件?你是否有一个
htaccess
文件,其中有任何重定向/重写?@IvijanStefanStipić我看到过类似的问题,以前PHP.ini文件也有问题。据说max_post_size(或类似的东西)应该是80M,“Read_Order”(名称也不是100%确定)应该是“egpc”,这两者都已经在我的php中了。ini@Andy我不太清楚你说的是什么意思?你能详细解释一下吗?@A-2-A它再次导致什么都没有,只是一个空数组,在$u POST应该在那里。你说把PHP代码放在HTML中没有任何标记?当我用“$\u SERVER['PHP\u SELF']”替换我的操作时,它会将我重定向到具有该名称的页面,这会给我一个404错误。目前正在尝试将其打印到动作代码中…是的,你是对的,你应该添加一个php标记,如:
action=“”
Hmm它仍然没有结果,我不相信问题在于我使用$\u GET时动作的效果很好。你说在HTML中添加php代码时没有任何标记?当我用“$\u SERVER['PHP\u SELF']”替换我的操作时,它会将我重定向到具有该名称的页面,这会给我一个404错误。目前正在尝试将其打印到操作代码中…是的,你是对的,你应该添加一个php标记,如:
action=“”
Hmm它仍然没有结果,我不相信问题在于我使用$\u GET时操作的工作状态。我应该在我的Xampp设置中寻找什么?当我在我的操作前面添加“/”时,它只是将我重定向到php文件上方的目录。我相当肯定我的行为是好的?因为它使用$\u GET方法工作。我应该在Xampp设置中查找什么?当我在我的操作前面添加“/”时,它只是将我重定向到php文件上方的目录。我相当肯定我的行为是好的?因为它确实使用$\u GET方法工作。
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());