【发布时间】:2020-02-21 21:46:51
【问题描述】:
我正在运行一个带有以下代码的 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 数组是空的。我发现不是 $_POST 数组,而是 $_REQUEST 数组,特别是 $_GET 数组包含我的参数。
服务器 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的代码或HTML表单在哪里?我猜如果一个表格,那么method设置为GET。 -
“有人知道为什么会发生这种情况吗?” - 似乎有理由得出这样的结论,因为您的值在查询字符串中而不是在 POST 中身体。您是否尝试过检查发送到代码的请求,而不仅仅是代码本身?
标签: php post http-post postman