所以我将if语句嵌套在另一个语句中以使用它进行表单验证,不幸的是它不起作用。假设我使用了一封无效的电子邮件,它会转到一个空白页,告诉我它没有通读
// Verification
if (empty($name && $username && $email && $pass1 && $pass2))
{
echo "Complete all fields";
// Password match
if ($pass1 <> $pass2)
{
echo $passmatch = "Passwords don't match";
// Email validation
if (!preg_match("/(['w'-]+'@['w'-]+'.['w'-]+)/", $email))
{
echo $emailvalid = "Enter a valid email";
// Password length
if (strlen($pass1) <= 6)
{
echo $passlength = "Password must be at least 6 characters long";
// Password numbers
if (!preg_match("#[0-9]+#", $pass1))
{
echo $passnum = "Password must include at least one number!";
// Password letters
if (!preg_match("#[a-zA-Z]+#", $pass1))
{
echo $passletter = "Password must include at least one letter!";
}
}
}
}
}
}
很抱歉,代码有点乱,我还在写。提前谢谢。
这不会像你想象的那样工作:
empty($name && $username && $email && $pass1 && $pass2)
你需要在每一个上使用empty。
还有一些其他项目不需要嵌套if-for。这个怎么样?
// Verification
if (empty($name) || empty($username) || empty($email) || empty($pass1) || empty($pass2))
{
echo "Complete all fields";
// you can stop it here instead of putting the curly brace ALL the way at the bottom :)
return;
}
// Password match
if ($pass1 <> $pass2)
{
echo $passmatch = "Passwords don't match";
}
// Email validation
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo $emailvalid = "Enter a valid email";
}
// Password length
if (strlen($pass1) <= 6)
{
echo $passlength = "Password must be at least 6 characters long";
}
// Password numbers
if (!preg_match("#[0-9]+#", $pass1))
{
echo $passnum = "Password must include at least one number!";
}
// Password letters
if (!preg_match("#[a-zA-Z]+#", $pass1))
{
echo $passletter = "Password must include at least one letter!";
}
通过这种方式,您可以一下子告诉用户所有问题。为什么让他们犯一个错误,重新提交,然后发现他们犯了另一个他们不知道的错误?