有人叫我的一个Snipplr提交"废话",因为我用if ($_SERVER['REQUEST_METHOD'] == 'POST')
而不是if ($_POST)
检查请求方法对我来说似乎更正确,因为这是我真正想做的事情.两者之间是否存在一些操作差异,或者这仅仅是代码清晰度问题?
gnu*_*nud 161
好吧,他们真的没有做同样的事情.
$_SERVER['REQUEST_METHOD']
包含请求方法(惊喜).
$_POST
包含任何发布数据.
POST请求可能不包含POST数据.
我检查了请求方法 - 我实际上从没想过测试$_POST
数组.不过,我检查了所需的帖子字段.所以一个空的帖子请求会给用户带来很多错误信息 - 这对我来说很有意义.
bin*_*yLV 16
我曾经检查过,$_POST
直到我遇到更大的POST数据和上传文件的麻烦.有配置指令- 如果超出任何配置指令post_max_size
,则不填充数组.upload_max_filesize
$_POST
所以"安全的方式"就是检查$_SERVER['REQUEST_METHOD']
.你仍然必须使用isset()
每个$_POST
变量,无论你检查还是不检查都没关系$_SERVER['REQUEST_METHOD']
.
如果您的应用程序需要根据类型发布的请求做出反应,请使用此:
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
}
Run Code Online (Sandbox Code Playgroud)
如果您的应用程序需要对通过邮寄请求收到的任何数据做出反应,请使用以
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
// ...
}
Run Code Online (Sandbox Code Playgroud)
它是特定于实现的,但您将同时使用+ $ _FILES超全局.
归档时间: |
|
查看次数: |
195027 次 |
最近记录: |