我有一个包含用户名和密码的表单,该值会发布到check.php 当我没有输入用户名和密码时,(留空),isset($ _ POST [“username”])和isset($ _ POST [“password”])返回true,它不应该是因为我没有设置任何东西。 但是空($ _ POST [“username”]按预期返回true。 有人可以解释这种isset的行为。
由于
答案 0 :(得分:2)
如果您提交表单元素......
<input name='username'...
...但它们是空的,默认情况下它会用$_POST
数组填充空值。因此,变量已设置,但它们为空(""
)。
在这种情况下我通常做的事情就像是
if (isset($_POST['username'] && $_POST['username']) { ... }
在这种情况下,它将检查是否已设置(即提交的表单)以及值是否为空。如果它们为空(""
),则PHP将解释为false
,并且不会满足条件。
答案 1 :(得分:1)
这可能是因为您的$ _POST ['username']已设置且可能为空,所以要克服这样的检查
if ((isset($_POST["username"]) && ($_POST["username"]!=""))
答案 2 :(得分:0)
isset — Determine if a variable is set and is not NULL
。
如果使用unset()取消设置变量,则将不再设置该变量。如果测试已设置为NULL的变量,则isset()将返回FALSE。另请注意,NULL字节(“\ 0”)不等同于PHP NULL常量。
如果提供了多个参数,则只有在设置了所有参数后,isset()才会返回TRUE。评估从左到右进行,一旦遇到未设置的变量就停止。 参考: - http://php.net/manual/en/function.isset.php