无法理解以下形式的isset和empty的行为

时间:2013-05-03 05:34:12

标签: php post isset is-empty

我有一个包含用户名和密码的表单,该值会发布到check.php 当我没有输入用户名和密码时,(留空),isset($ _ POST [“username”])和isset($ _ POST [“password”])返回true,它不应该是因为我没有设置任何东西。  但是空($ _ POST [“username”]按预期返回true。 有人可以解释这种isset的行为。

由于

3 个答案:

答案 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