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

时间:2014-12-04 15:20:19

标签: php if-statement strlen

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

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

这是否合乎逻辑,或者可以将密码比较与 strlen()功能结合使用 if <| strong>语句,并以 || 或者它应该是&amp;&amp; 介于两者之间?

        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
          }

或者我应该做两个不同的陈述?

4 个答案:

答案 0 :(得分:4)

如果要显示两条不同的错误消息,则应该生成两个不同的语句,例如:

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
}

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

答案 1 :(得分:3)

你所拥有的应该完美无缺。

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

如果您觉得不需要区分这两种情况,那么单一陈述就会更加紧凑。

答案 2 :(得分:3)

从编程的角度来看,这很好,但不是从用户界面的角度来看。为“密码不匹配”返回特定错误消息要好得多。错误和密码太短&#39;错误。

答案 3 :(得分:2)

作为单一陈述,它可能很好。这里的逻辑并没有花费太多时间去理解。从风格上讲,首先测试正常流量可能会更好(即,密码匹配并且是正确的长度)。这只是一种微妙的方式,可以帮助任何未来的代码读者更容易理解这里的预期:

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';
}