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

Php 如何检查用户是否忘记填写没有isset()或empty()的表单?,php,string,forms,isset,Php,String,Forms,Isset,假设网站使用此表单: … … 然后用户忘记填写用户名 但是在PHP代码中有一个if语句: … $posted\u username=$\u POST['username'] if(设置($posted_username)) … 这就是isset()的“问题”。它会变成现实。它会说实际上设置了变量,因为如果值不是NULL,则isset()会返回TRUE PHP手册说,isset()“如果var存在,则返回TRUE,否则返回FALSE。” 但是如何检查用户是否忘记输入用户名 “你这个白痴!只需使用

假设网站使用此表单:


然后用户忘记填写用户名

但是在PHP代码中有一个if语句:

$posted\u username=$\u POST['username']
if(设置($posted_username))

这就是
isset()
的“问题”。它会变成现实。它会说实际上设置了变量,因为如果值不是
NULL
,则
isset()
会返回TRUE

PHP手册说,
isset()
“如果var存在,则返回TRUE,否则返回FALSE。”
但是如何检查用户是否忘记输入用户名

“你这个白痴!只需使用
empty()

那么,如果用户希望将“0”作为用户名,会发生什么情况?
即使字段中填充了“0”,也会显示该字段为空


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

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

如果$\u POST中缺少该字段(即为null)或已跳过该字段,则此操作同样有效,但对于
empty()
可能出错的值,如0,此操作将正常工作

如果您还想阻止用户提交由空白组成的用户名(这可能是个好主意),那么可以调用
trim()


if(strlen($_POST['Username'])==0{…}
@iainn哇,真不敢相信我没想到。非常感谢。您可能希望在检查长度之前也修剪条目,除非人们可以使用空白用户名。或者
if($\u POST['Username']=='')
为什么您甚至让用户以用户名0开头?此外,只有“一个”应该承担这一点,而不是其他人。我认为这一点都不明智;使用
empty()
,不要只在其中输入整数而输入字符串。做事总有更好的方法,但这不是其中之一。
if (strlen($_POST['Username']) === 0) {
  // User did not fill out the field
}
if (strlen(trim($_POST['Username'])) === 0) {
  ...
}