我正在运行带有以下代码的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编程,也许我缺少明显的东西。
$_POST
和$_GET
超全局变量不是以HTTP方法命名的(至少不是直接命名的。)>
它们以HTML表单method
属性值命名,并关心数据在请求中的位置。
$_GET
由URL的查询字符串中的数据填充$_POST
由请求/请求正文中的application / x-www-form-urlencoded和multipart / form-data编码的数据填充您必须发出POST请求,但将数据放入URL的查询字符串中。