PHP isset:这是多余的吗?

PHP isset:这是多余的吗?,php,forms,isset,Php,Forms,Isset,提交表单后,我总是检查表单是否为isset,然后检查所有字段是否也为isset 这是我的php代码: if(isset($_POST)) { if(isset($_POST['username'], $_POST['password'])) { // process } } 我的问题是,我对isset的第一次检查是否是表单本身是否已提交,然后再次检查每个input是否isset或者我使用 if(isset($\u POST)){} 它实际上会检查表单中的字段吗 我希望你能提前明

提交表单后,我总是检查表单是否为
isset
,然后检查所有字段是否也为
isset

这是我的
php
代码:

if(isset($_POST)) {
  if(isset($_POST['username'], $_POST['password'])) {
    // process
  }
}
我的问题是,我对
isset
的第一次检查是否是表单本身是否已提交,然后再次检查每个
input
是否
isset
或者我使用

if(isset($\u POST)){}

它实际上会检查表单中的字段吗


我希望你能提前明白我的意思,谢谢。

嗯,
$\u POST
总是设置好的,所以不需要第一句话。。仅当设置了特定字段时才选中

编辑:如注释中所述,
isset()
仅提供设置某个变量时的信息,而不提供该变量是否具有某个值时的信息
empty()
可以告诉你,如果你有什么东西在里面

编辑2:为了确保
empty()
会或不会在未定义的帖子字段上注意到您,请尝试以下操作:

error_reporting(E_ALL);
var_dump(empty($_POST['undefined']));

您将看到
empty()
也适用于未定义的索引。

如果要检查post索引是否已发送,请使用
array\u key\u exists()检查它是否包含空字符串或某些数据:

wtf

更好使用$\u服务器['REQUEST\u METHOD']

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// process
}

您的代码中缺少一个
。@hek2mgl它还会检查
isset()
部分:)@Mr.Alien wait。。你能解释一下你的代码吗?也许我是瞎子,但我不明白,即使我被这个问题弄糊涂了,如果这个问题是关于
isset()
的,那么它已经被回答了,如果是关于键或者值是空的,那么
in_array()
会很有帮助,但是我确信键在这里没有什么关系:)这都是值和isset..我猜这个问题只是关于“我是否应该测试isset($_POST)”。答案是否定的,因为它将始终被设置。然后,您添加了
empty()
提示,如果OP希望确保没有提交空字段,这会很有帮助。(否则不会)…对于您的代码,我的意思是,我得到了
PHP致命错误:无法使用[]用于在执行代码时阅读
。说实话,我没有阅读过一次就发布了,所以我删除了它,我看到你的回答有点类似,所以如果我重复同样的内容也没关系:)@Mr.Alien我仍然希望看到你的解决方案,因为我不确定你想展示什么。我问这个问题是因为这可能是一个很好的尝试,
array_key_exists()
非常慢。。
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// process
}