若满足条件,但在PHP代码中被忽略



如果输入了用户名,我有以下代码要验证:

if (!isset($_POST['username']) ) {

header("location: index.php");
$error_message = "Please enter your Username and Password!";
exit();
}

如果我没有在username字段中输入任何值,则条件将变为false,并将在if语句中执行代码,当我输入用户名时也会出现类似的情况!

知道为什么会发生这种事吗?

如果您有一个带有<input name="username">的表单,则此输入将始终具有某种值。如果没有输入任何内容,则该值仍然是空字符串。当然,这个空字符串会被发布到服务器上。

另一方面,PHP isset检查

"如果变量被声明并且不同于null";

当然,即使对于空字符串,这也是true(即username存在,它与null不同(。如果您想捕捉username根本不存在或是空字符串的所有情况,例如,您可以执行以下

if (!isset($_POST['username']) || trim($_POST['username']) === '' )

或者你可以使用

if (strlen($_POST['username']) == 0)

最新更新