Php !空($#u POST)与$#u服务器[';请求方法';]=&';邮政';

Php !空($#u POST)与$#u服务器[';请求方法';]=&';邮政';,php,forms,post,Php,Forms,Post,如果发现这个问题,人们似乎更喜欢检查$\u服务器['REQUEST\u METHOD']='POST',而不是检查$\u POST或isset($\u POST) (我已经不明白为什么人们会选中isset($\u POST),而它总是被设置的) 但是如果我们检查,会怎么样呢!空($\u POST)而不是所有这些 我的意思是,$\u POSTsuperglobale在页面上总是被定义为一个空的数组,所以只要检查它是否为空就意味着已经提交了一个带有POST方法的表单,我错了吗?如果不是空的,我们可以

如果发现这个问题,人们似乎更喜欢检查
$\u服务器['REQUEST\u METHOD']='POST'
,而不是检查
$\u POST
isset($\u POST)

(我已经不明白为什么人们会选中isset($\u POST),而它总是被设置的)

但是如果我们检查
,会怎么样呢!空($\u POST)
而不是所有这些

我的意思是,
$\u POST
superglobale在页面上总是被定义为一个空的
数组
,所以只要检查它是否为空就意味着已经提交了一个带有
POST方法的表单,我错了吗?如果不是空的,我们可以检查我们想要的每个字段

我不明白为什么我们需要通过检查来添加额外的步骤

$_SERVER['REQUEST_METHOD'] == 'POST'
(同样,三重“=”也不会更好吗?)

我找过了,但什么也没找到。如果我什么也没找到,那可能意味着我在胡说八道


有人能告诉我我是否错了吗?

PHP选择命名为
$\u POST
$\u GET
,就像他们所做的那样,这是非常糟糕的,并且在这里主要导致混乱
$\u GET
包含请求URL的查询参数,而
$\u POST
包含解析的请求正文数据(如果是
application/x-www-form-urlencoded

任何URL以及任何请求都可以包含URL查询参数,因此,
$\u GET
可以用于任何类型的请求,而不仅仅是HTTP
GET
请求。HTTP
POST
PUT
请求(可以说是您组成的任何其他动词)可以包含一个
urlencoded
请求体,它将/可能最终出现在
$\uPost
中(我不知道PHP是否费心解析除
POST
请求之外的任何内容的体数据)。
POST
PUT
请求也不必包含正文数据;如果一个空的
POST
请求在您的应用程序中有意义,那么就这样吧

因此,
$\u POST
POST
$\u GET
GET
、请求正文数据、查询参数等都是相互正交的

如果要检查HTTP请求的方法,请检查
$\u服务器['request\u method']
。如果您想知道是否发送了任何URL编码的正文数据,请检查
$\u POST
中是否有数据。为此,
如果($\u POST)
就足够了。通常你可以用一个代替另一个,但这取决于你想检查什么


关于其他未定义的变量。除此之外,它的行为与正常的真实/错误检查完全相同。

$\u POST
superglobale始终是定义的”–那么为什么要使用
空的呢?只要
if($\u POST)
!因为我不想检查它是否已定义。。。我想检查是否已提交带有值的表单。所以它不是空的,这意味着表单已经提交。是的,对,所以…
if($\u POST)
-这不是检查它是否被定义,而是检查它是否包含真实值。因此,在确定
if(!empty($\u POST))
if($\u POST)
(模数错误报告)…是否还有任何问题需要回答,而您链接到的其他问题尚未回答?这就是我的意思;-)谢谢,我现在很清楚。感谢在我的问题上的其他评论,这些评论帮助我理解了一切。