0

I have a form with username and password and the value gets posted to check.php when I have no input in username and password,(left blank), isset($_POST["username"]) and isset($_POST["password"]) returns true, which it should not be as I did not set anything. But empty($_POST["username"] returns true as is expected. can someone explain this behaviour of isset.

Thanks

4

3 回答 3

2

如果您提交表单元素...

<input name='username'...

...但它们是空的,默认情况下它将$_POST用空值填充数组。因此,变量已设置,但它们是空的 ( "")。

我通常在这种情况下做的是

if (isset($_POST['username'] && $_POST['username']) { ... }

在这种情况下,它将检查它是否已设置(即是否已提交表单)以及值是否不为空。如果它们为空 ( ""),PHP 将解释为false并且不满足条件。

于 2013-05-03T05:36:12.873 回答
1

那可能是因为您的 $_POST['username'] 已设置并且可能为空,因此要克服这样的检查

if ((isset($_POST["username"]) && ($_POST["username"]!=""))
于 2013-05-03T05:36:39.663 回答
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

于 2013-05-03T05:38:45.580 回答