检查请求是GET还是POST

Gra*_*ton 310 php

可能重复:
PHP检测请求类型(GET,POST,PUT或DELETE)

这应该很简单.

我有一个脚本,在脚本中我想确定请求是通过GET还是POST方法到达.

这样做的正确方法是什么?

我正在考虑使用这样的东西

if (isset($_POST)) {
    // do post
} else  {
    // do get
}
Run Code Online (Sandbox Code Playgroud)

但在我内心深处,我觉得这不是正确的方法.任何的想法?

Gum*_*mbo 749

更好用$_SERVER['REQUEST_METHOD']:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // …
}
Run Code Online (Sandbox Code Playgroud)

  • 根据NetBeans IDE,直接访问`$ _SERVER`并不好.因此,在这种情况下,替代方案是`if(filter_input(INPUT_SERVER,'REQUEST_METHOD')==='POST'){...}`. (6认同)
  • 你可以使用`===`*或*`==`.前者只是一种很好的做法,因为它检查变量是否"相同".(EG:`5 =='5'`是'真',但'5 ==='5'`是'假') (4认同)
  • 如果它既不是GET也不是POST,也要考虑返回405.if($ _SERVER ['REQUEST_METHOD'] ==='POST'){// do post} elseif($ _SERVER ['REQUEST_METHOD'] ==='GET'){// do get} else {http_response_code(405) ; 死(); } (3认同)