【问题标题】:$_SERVER['REQUEST_METHOD'] evaluates to to 'GET' by default$_SERVER['REQUEST_METHOD'] 默认为 'GET'
【发布时间】:2012-07-27 11:05:28
【问题描述】:

对此进行了一些挖掘,但是没有找到信息

我正在尝试检查是否已提交表单以及它是GET 还是POST。所以基本上我使用:

if($_SERVER['REQUEST_METHOD'] == 'GET')

if($_SERVER['REQUEST_METHOD'] == 'POST')

但是,我发现如果我不提交任何表单,而直接进入页面 - 一个简单的 HTTP 请求,REQUEST_METHOD 就是GET。是什么赋予了?这是设计使然吗?如果是这样,那么我不能使用前一条语句来检查表单是否已通过 GET 提交。好像有点多余……

请有更多知识的人向我解释一下,将不胜感激。谢谢。

【问题讨论】:

  • 如果有帮助:我通常使用 count($_GET) 或 count($_POST) 检查。
  • @elcodedocle empty($_POST)empty($_GET)count() 稍微高效一些,但不是很多,这绝对是微优化。
  • @DaveRandom 很好,谢谢。
  • @DaveRandom 谢谢,当谈到密集使用时,这肯定是一个有趣的优化,我会考虑的。

标签: php http-post http-get


【解决方案1】:

基本上大多数 HTTP 请求都是 GET 请求。

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

不过,if(count($_GET)>0) 会告诉您是否有 $_GET 数据。

您可以同时拥有 POST 和 GET 数据,方法是向其中包含 GET 数据的 URL 发送 POST 请求(即http://example.unreal?GetData=4&OtherData=no

【讨论】:

  • 感谢您的澄清,从现在开始我将使用count ++++
【解决方案2】:

只需通过浏览器访问一个页面或单击一个链接就是一个 GET 请求。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题并通过以下方式解决: 当表单操作设置为iprofile?r=search 时,请求方法始终为GET,表单中的所有输入数据都将丢失。但是当我将动作设置为iprofile/?r=search时,请求方法变成了POST。

    也许您还可以检查您的操作 URL。

    【讨论】:

      猜你喜欢
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-21
      • 1970-01-01
      • 2010-09-29
      • 2012-09-27
      • 2012-04-23
      相关资源
      最近更新 更多