2012-07-27 91 views
4

到“GET”在做一点挖这个的,但是,没有运气找到信息

我试图检查表单是否已经提交,如果它是GETPOST。所以基本上我用:

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

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

然而,我发现,如果我不提交任何形式的,只是直接转到页 - 一个简单的HTTP请求时,REQUEST_METHODGET。是什么赋予了?这是设计吗?如果是这样,那么我不能使用前面的语句来检查表单是否已通过GET提交。似乎有点多余...

有人多一点知识,请解释这给我,这将不胜感激。谢谢。

+2

如果有帮助:我通常用count($ _ GET)或count($ _ POST)来检查。 – NotGaeL 2012-07-27 11:12:30

+0

是的,这有助于感谢你。 – chaser 2012-07-27 11:20:10

+3

@elcodedocle'empty($ _ POST)'和'empty($ _ GET)'比'count()'略高效,但不是太多,这绝对是微型优化。 – DaveRandom 2012-07-27 11:20:39

回答

7

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

您可以使用if($_POST)来检查它是否是POST。 (这是与它POST数据的阵列。所有页面都$_GET集,所以if($_GET)将无法​​正常工作,以判断它是一个GET)

然而,if(count($_GET)>0)会告诉你,如果有$ _GET数据。

您可以同时POST虽然获取数据,通过它与GET数据发送POST请求的URL(即http://example.unreal?GetData=4&OtherData=no

+0

感谢您的澄清,我会从现在开始使用++++ – chaser 2012-07-27 11:20:37

1

通过浏览器简单地将一个页面或点击一个链接是一个GET请求。

+0

我看,这是很好的知道。谢谢。 – chaser 2012-07-27 11:21:20

1

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

也许你也可以检查你的动作URL。