想知道这是否可以作为单个 if() 语句工作


Wondering if this would work as a single if() statement

我正在处理注册表,并处理if语句,其中检查密码是否与确认密码匹配。

想知道的是,我是否可以将两个密码的相互检查与密码长度检查器结合起来并返回错误,或者如果两者都通过,则继续将用户插入数据库。

这是否合乎逻辑或是否可以将密码比较与 strlen() 函数组合在用 || 分隔的相同 if() 语句中,或者它应该是介于两者之间的 &&

        if ($password != $password_confirm || strlen($password) < 8) {
$error_register = 'Passwords do not match or is under less that 8 characters';
        } else {
      //finish inserting user into database statement
          }

还是我应该只做 2 个不同的陈述?

如果要显示两个不同的错误消息,则应创建两个不同的语句,例如:

if ($password != $password_confirm) {
   $error_register = 'Passwords do not match';
} elseif (strlen($password) < 8) {
   $error_register = 'Password is under less than 8 characters';
} else {
   //finish inserting user into database statement
}

否则,您提供的代码就可以了。

你那里的东西应该可以正常工作。

这两个选项之间的主要区别在于,如果您有单独的语句,则可以向用户提供更多信息,告诉他们它们不匹配或太短。照原样,用户只会知道其中一个(或两个)是错误的。

如果您觉得没有必要区分这两种情况,那么单个语句会更紧凑一些。

从编程的角度来看,这很好,但从用户界面的角度来看就不行了。为"密码不匹配"错误和"密码太短"错误返回特定的错误消息要好得多。

作为一个语句可能没问题。这里的逻辑不需要花太多时间就可以理解。从风格上讲,最好先测试正常流程(即密码匹配且长度合适)。这只是一种微妙的方式,可以帮助任何未来的代码读者更容易理解这里的预期内容:

if ($password == $password_confirm && strlen($password) >= 8) {
//finish inserting user into database statement
} else {
    $error_register = 'Passwords do not match or is under less that 8 characters';
}