【问题标题】:$_SERVER['REQUEST_METHOD'] return GET insted POST$_SERVER['REQUEST_METHOD'] 返回 GET insted POST
【发布时间】:2013-08-22 03:03:37
【问题描述】:

我使用类似的 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”,我真的不知道为什么?

【问题讨论】:

  • 你在使用
    东西吗?
  • 你知道,你需要添加一个
  • 您真的执行 POST 吗?

标签: php post get


【解决方案1】:

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

我的表单中的 Action 属性没有在我的域前面包含“www”,但我的实际 URL 需要“www”。

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多