猿问

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

有人称我的Snipplr提交内容之一为“废话”,因为我使用的if ($_SERVER['REQUEST_METHOD'] == 'POST')不是if ($_POST)


检查请求方法对我来说似乎更正确,因为那是我真正想要做的。两者之间在操作上有区别吗?还是仅仅是代码清晰性问题?


慕勒3428872
浏览 1145回答 3
3回答

慕尼黑的夜晚无繁华

好吧,他们确实没有做同样的事情。$_SERVER['REQUEST_METHOD'] 包含请求方法(惊奇)。$_POST 包含任何帖子数据。POST请求可能不包含POST数据。我检查了请求方法—实际上,我从未想过要测试$_POST阵列。不过,我检查了必填字段。因此,空的发布请求会给用户很多错误消息-这对我来说很有意义。

斯蒂芬大帝

我曾经检查过,$_POST直到遇到更大的POST数据和上传的文件的麻烦为止。存在配置指令,post_max_size并且upload_max_filesize-如果超过其中任何一个,$_POST则不填充数组。因此,“安全方法”是检查$_SERVER['REQUEST_METHOD']。不过,您仍然必须isset()在每个$_POST变量上使用,并且无论您检查还是不检查都没有关系$_SERVER['REQUEST_METHOD']。

慕神8447489

如果您的应用程序需要根据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超全局变量。
随时随地看视频慕课网APP
我要回答