为了账号安全,请及时绑定邮箱和手机立即绑定

$ _POST与$ _SERVER ['REQUEST_METHOD'] =='POST'

$ _POST与$ _SERVER ['REQUEST_METHOD'] =='POST'

PHP
慕勒3428872 2019-10-09 16:12:12
有人称我的Snipplr提交内容之一为“废话”,因为我使用的if ($_SERVER['REQUEST_METHOD'] == 'POST')不是if ($_POST)检查请求方法对我来说似乎更正确,因为那是我真正想要做的。两者之间在操作上有区别吗?还是仅仅是代码清晰性问题?
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

好吧,他们确实没有做同样的事情。

$_SERVER['REQUEST_METHOD'] 包含请求方法(惊奇)。

$_POST 包含任何帖子数据。

POST请求可能不包含POST数据。

我检查了请求方法—实际上,我从未想过要测试$_POST阵列。不过,我检查了必填字段。因此,空的发布请求会给用户很多错误消息-这对我来说很有意义。


查看完整回答
反对 回复 2019-10-09
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我曾经检查过,$_POST直到遇到更大的POST数据和上传的文件的麻烦为止。存在配置指令,post_max_size并且upload_max_filesize-如果超过其中任何一个,$_POST则不填充数组。

因此,“安全方法”是检查$_SERVER['REQUEST_METHOD']。不过,您仍然必须isset()在每个$_POST变量上使用,并且无论您检查还是不检查都没有关系$_SERVER['REQUEST_METHOD']


查看完整回答
反对 回复 2019-10-09
?
慕神8447489

TA贡献1780条经验 获得超1个赞

如果您的应用程序需要根据post类型的请求做出反应,请使用以下命令:


if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') { // if form submitted with post method

    // validate request, 

    // manage post request differently, 

    // log or don't log request,

    // redirect to avoid resubmition on F5 etc

}

如果您的应用程序需要对通过邮寄请求收到的任何数据做出反应,请使用以下命令:


if(!empty($_POST)) {  // if received any post data

   // process $_POST values, 

   // save data to DB,

   // ... 

}


if(!empty($_FILES)) { // if received any "post" files

   // validate uploaded FILES

   // move to uploaded dir

   // ...

}

它是特定于实现的,但是您将同时使用+ $ _FILES超全局变量。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 1144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信