PHP:通过post发送的变量位于$ _GET数组中,而$ _POST数组为空

问题描述 投票:-1回答:1

我正在运行带有以下代码的PHP服务器。

<?php
    if ($_SERVER["REQUEST_METHOD"] === "POST") {
        if (isset($_POST["username"]) && isset($_POST["password"])) {
            echo $_POST["username"];
            http_response_code(200);
        }
    }
?>

期望脚本返回用户名,如果在发布请求中同时设置了用户名和密码。但是脚本不返回任何内容。使用Postman进行调试时,我发现第一个if语句通过了-我是发送发布请求,但是$$ POST数组为空。我发现而不是$ _POST数组,$ _ REQUEST数组,特别是$ _ GET数组包含我的parameters

服务器REQUEST_METHOD设置为POST,但是$ _GET数组包含我的参数。

因此此代码有效:

<?php
    if ($_SERVER["REQUEST_METHOD"] === "POST") {
        if (isset($_GET["username"]) && isset($_GET["password"])) {
            echo $_GET["username"];
            http_response_code(200);
        }
    }
?>

有人知道为什么会这样吗?我前段时间已经用php编程,也许我缺少明显的东西。

php post http-post postman
1个回答
1
投票

$_POST$_GET超全局变量不是以HTTP方法命名的(至少不是直接命名的。)>

它们以HTML表单method属性值命名,并关心数据在请求中的位置。

  • [$_GET由URL的查询字符串中的数据填充
  • [$_POST由请求/请求正文中的application / x-www-form-urlencoded和multipart / form-data编码的数据填充
  • 您必须发出POST请求,但将数据放入URL的查询字符串中。

© www.soinside.com 2019 - 2024. All rights reserved.