如何检查用户是否忘记填写没有 isset() 或 empty() 的表单?

How to check if an user forgot to fill a form without isset() or empty()?

假设一个网站使用这种形式:
...
<input type="text" name="Username">
...

然后用户忘记填写用户名。

但是您的 PHP 代码中有这个 if 语句:
...
$posted_username = $_POST['Username'];
if (isset($posted_username))
...

这是 "problem" 和 isset()。它将 return 为真。它会说该变量实际上已设置,因为如果值不是 NULLisset() 确实 return TRUE。

PHP 手册说 isset() "Returns TRUE if var exists and has value other than NULL. FALSE otherwise."
但是我如何检查用户是否只是忘记输入他们的用户名?

"You idiot! Just use empty()."
那么,如果用户想要将“0”作为用户名会怎样?
它会说该字段是空的,即使它填充了“0”。

那么,检查用户是否忘记填写表单的简单方法是什么?用户应该能够将“0”作为用户名。

您要测试输入的字符串长度是否大于零,这可以使用 PHP 的 strlen function:

来完成
if (strlen($_POST['Username']) === 0) {
  // User did not fill out the field
}

如果 $_POST 中缺少该字段(即为空)或已被跳过,这将同样有效,但对于 empty() 会出错的值,如 0.

如果您还想阻止用户提交由 white-space 组成的用户名(可能是个好主意),则包括对 trim():

的调用
if (strlen(trim($_POST['Username'])) === 0) {
  ...
}