我的表单提交后,我总是检查表单是否为isset
,然后检查所有字段是否也是isset
这是我的php
代码:
if(isset($_POST)) {
if(isset($_POST['username'], $_POST['password'])) {
// process
}
}
我的问题是,我首次检查isset
是否表单本身已提交,然后再次检查每个input
是否isset
或我使用的时刻
if(isset($_POST)) { }
它会实际检查该表单中的字段吗?
我希望你事先得到我的意见。
答案 0 :(得分:8)
嗯,总是设置$_POST
,所以不需要第一个语句。只检查是否设置了特定字段。
编辑:如评论中所述,isset()
仅为您提供信息,如果设置了某个变量,则不会为您提供某些值。 empty()
可以告诉你,如果你有内容。
编辑2:为确保empty()
在未定义的POST字段中是否会注意到您,请尝试以下操作:
error_reporting(E_ALL);
var_dump(empty($_POST['undefined']));
您将看到empty()
也适用于未定义的索引。
答案 1 :(得分:1)
如果要检查是否已发送帖子索引,如果它包含空字符串或某些数据使用array_key_exists()
,则无需重置:
if(array_key_exists($_POST['foo']) && array_key_exists($_POST['bar'])) ..
答案 2 :(得分:-1)
WTF ??
更好使用$ _SERVER ['REQUEST_METHOD']
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// process
}