【问题标题】:Wondering if this would work as a single if() statement [closed]想知道这是否可以作为单个 if() 语句工作[关闭]
【发布时间】:2014-12-04 15:20:19
【问题描述】:

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

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

这是否合乎逻辑或可能将密码比较与 strlen() 函数结合在同一 if() 语句中,并用 || 分隔strong> 还是应该是 && 介于两者之间?

        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
          }

或者我应该只做两种不同的陈述吗?

【问题讨论】:

  • 看起来不错。你有具体的问题吗?是保留你拥有的东西还是让它成为两种不同的陈述主要是基于意见的。您的问题本质上是“我的两个潜在无效结果是否应该有各自的信息”(也许是User Experience 的问题)。
  • 我做了两个不同的陈述
  • 这个问题似乎是题外话,因为属于codereview.stackexchange.com 并且代码已经在工作了。
  • 如果您想明确提及这两个问题,您需要单独的 if() 语句。但这并没有错。但你基本上是在征求意见,这显然与本网站无关。
  • 感谢您的所有意见等,我可能会按照@brandelizer 的建议将其设为两个不同的陈述,因此它将给出单独的消息。

标签: php if-statement strlen


【解决方案1】:

如果你想显示两个不同的错误信息,你应该做两个不同的语句,例如:

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
}

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

【讨论】:

  • 感谢 elseif() 部分,我根本没想到!
  • 这是我使用的,我也可以使用它来检查电子邮件格式是否正确以及是否已被其他用户使用
【解决方案2】:

您所拥有的应该可以正常工作。

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

如果你觉得不需要区分这两种情况,单条语句会更简洁一些。

【讨论】:

    【解决方案3】:

    从编程的角度来看这很好,但从用户界面的角度来看却不行。为“密码不匹配”错误和“密码太短”错误返回特定的错误消息会更好。

    【讨论】:

    • 你是对的!我将把它变成两个不同的语句,用 elseif() 分隔
    【解决方案4】:

    作为一个单一的陈述可能很好。这里的逻辑不需要太多的凝视时间来理解。从风格上讲,最好先测试正常流程(即密码匹配并且长度正确)。这只是帮助任何未来的代码读者更容易理解此处预期内容的一种微妙方式:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2021-08-01
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      相关资源
      最近更新 更多