如果条件满足但在 PHP 代码中被忽略

If condition is meet but is ignored in PHP code

我有以下代码来验证是否输入了用户名:

 if (!isset($_POST['username']) ) {
    
    header("location: index.php");
    $error_message = "Please enter your Username and Password!";
    exit();
 }

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

知道为什么会这样吗?

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

另一方面PHPisset检查

"if a variable is declared and is different than null"

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

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

或者您可以使用

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