检查$ _SERVER [' REQUEST_METHOD'] ==' POST&#39 ;?的原因

时间:2014-07-21 12:57:10

标签: php

我在这里搜索了十几个与以下相关的答案:

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

然而,我仍然没有找到为什么的答案。

如果我们已经设置<form method="post">

,为什么要这样做?

这不意味着它是唯一的形式方法吗?

2 个答案:

答案 0 :(得分:5)

如果用户来自上一个表单,那么请求方法确实是POST。但任何人都可以向您的服务器发出请求,例如通过CURL或自定义程序。没有人阻止随机请求您的页面。

因此,您无法确定服务器上的请求方法是否确实是POST,并且所有数据都存在。

在另一个上下文中,它可用于检查表单是否实际已提交。例如:

<?php if($_SERVER['REQUEST_METHOD'] == 'POST') { ?> <!-- The server has recieved something via POST! -->
    Thank you for submitting the form!
<?php } else { ?> <!-- No postdata, lets show the form! -->
    <form method='POST'> <!-- By setting the method we ask that the client does a post request. -->
        <input type='submit' />
    </form>
<?php } ?>

答案 1 :(得分:0)

您可以通过两种方式将表单从客户端发送到服务器:GETPOST。它们在RFC 2616 (HTTP)中定义,但您可以直接看到的差异是GET显示在网址中,POST没有。

请记住,这仅适用于客户端的浏览器,以决定将内容发送到服务器的方式。

关于$_SERVER['REQUEST_METHOD']

  

使用哪种请求方法来访问页面;即&#39; GET&#39;,&#39; HEAD&#39;,&#39; POST&#39;,&#39; PUT&#39;。

     

注意:如果请求方法是HEAD,PHP脚本在发送标头后终止(这意味着在产生没有输出缓冲的任何输出之后)。

您可能想要使用

的一个原因
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
} 

可能是检查表单是否已提交。但请记住:人们可以在不实际使用您的表单的情况下发送POST个请求!所以你必须检查其他数据。