3 回答
TA贡献1864条经验 获得超6个赞
好吧,他们确实没有做同样的事情。
$_SERVER['REQUEST_METHOD']
包含请求方法(惊奇)。
$_POST
包含任何帖子数据。
POST请求可能不包含POST数据。
我检查了请求方法—实际上,我从未想过要测试$_POST
阵列。不过,我检查了必填字段。因此,空的发布请求会给用户很多错误消息-这对我来说很有意义。
TA贡献1827条经验 获得超8个赞
我曾经检查过,$_POST
直到遇到更大的POST数据和上传的文件的麻烦为止。存在配置指令,post_max_size
并且upload_max_filesize
-如果超过其中任何一个,$_POST
则不填充数组。
因此,“安全方法”是检查$_SERVER['REQUEST_METHOD']
。不过,您仍然必须isset()
在每个$_POST
变量上使用,并且无论您检查还是不检查都没有关系$_SERVER['REQUEST_METHOD']
。
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超全局变量。
- 3 回答
- 0 关注
- 1144 浏览
添加回答
举报