如果输入了用户名,我有以下代码要验证:
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)