6

我使用这样的 post 方法创建了一个表单:

  <form name="indexFormn" id="indexForm"  method="POST" action="page.php">
  <div class="AdminformDiv">
  <div class="errorbox">
      <?php
      if (!is_array($this->actionErrors)) {
        echo $this->actionErrors;
    }
    ?>
</div>
<div>
    <table border="0" cellpadding="0" cellspacing="0" style="width:700px">
        <tbody>
            <tr>
                <td style="width:128px">Amount</td>
                <td colspan="2">$ <?php echo $this->price;?> USD<td     style="width:270px">&nbsp;</td>
            </tr>
            <tr>

.....

但问题是当我执行“var_dump($_SERVER['REQUEST_METHOD']);” 在我的 php 代码中,我总是得到“GET”而不是“POST”,我真的不知道为什么?

4

3 回答 3

4

我刚刚使用 Codeigniter 的 MVC 框架遇到了这个问题。这是我发现的:

我的表单中的 Action 属性不包括我的域前面的“www”,但我的实际 URL 需要“www”。

即我的表单有action="https://mydomain/something",但如果我转到那个 URL,我注意到我的网络主机将 www 添加到开头: https://www.mydomain/something。(我使用 DreamHost,这是我选择的设置)

我希望这也是您的问题 - 尝试弄清楚真的很令人沮丧,但是一旦我的操作和实际 URL 同意“www”,我的请求方法就从 GET 变为 POST。

于 2017-10-02T20:50:37.237 回答
1

基本上大多数 HTTP 请求都是 GET 请求。并且 $_SERVER['REQUEST_METHOD'] 评估默认的 GET 方法。

您可以使用 if($_POST) 检查它是否为 POST。(这是包含 POST 数据的数组。所有页面都设置了 $_GET,因此 if($_GET) 无法判断它是否为 GET)

当您提交表单时,您肯定会在“page.php”上获得 POST 方法。尝试在此页面上获取方法并找到。

于 2013-08-22T03:56:26.440 回答
0

在@Brian Stork 的回答之后,这是因为发生了某种重定向。重定向可能是由于以下原因:

  • HTTPS/HTTP 重定向。例如certbot,如果您愿意,可以激活它。您可以在.conf文件中更改它,然后systemctl restart apache2
  • 尾部斜杠重定向。
  • www子域重定向
  • 其他可能的重定向?!

所以检查所有这些。如果您正在使用 Slack 机器人之类的机器人向您的应用程序发送请求,请检查它们发送的确切 url 是什么以避免重定向。

于 2022-02-25T06:12:11.420 回答