【问题标题】:How to verify password [duplicate]如何验证密码[重复]
【发布时间】:2012-09-18 14:10:43
【问题描述】:

可能重复:
Use regular expressions to validate passwords

我正在尝试编写一个 php 部分,我必须确保密码是:

  1. 至少 6 个字符
  2. 至少一个大写字母
  3. 至少一个小写字母
  4. 至少一个数字字符
  5. 至少一个非字母数字字符

我必须确保密码与“重新输入密码”部分相符。我已经验证了密码和重新输入密码,这是最好的表达方式吗?

if ($pass != $repass)
{
  $repassErrorMsg = "Your password does not match the password entered above";
}

我不确定如何验证上述案例的密码。我知道如何使用 RegEx 来验证实体格式,但如果格式灵活,我不确定如何验证以下情况。如何表达我的密码 RegEx 以验证用户选择的密码的任何案例场景(例如至少一个数字)。他可以在密码文本框中的任何位置输入任何案例场景。

【问题讨论】:

  • 你试过什么?另外,请注意 PHP 的类型很松散,您至少应该使用$pass !== $repass
  • @Zar 好的,!== 和 != 的作用是一样的吗?
  • @David B 谢谢,我也会查看该页面。
  • @GivenPie 正好相反。 1 == "1doesntmatter" 等于 true;不是你所期望的对吗? (证明:codepad.org/NNiaZMM0

标签: php regex validation passwords


【解决方案1】:

要检查密码的强度和安全性,您必须混合使用 Regex 和 PHP。

查看this 的帖子。 提供的代码描述了您的所有条件。

【讨论】:

    【解决方案2】:

    我使用PHP-Password 类 - 它可以满足您的所有要求。

    【讨论】:

      【解决方案3】:

      我发现这可能会有所帮助...

      测试你的大小写:

      checking a password for upper lower numbers and symbols

      测试你的长度:

      Check String Length In PHP

      【讨论】:

        【解决方案4】:

        使用正则表达式非常简单>>

        preg_match('/^(?=.{6})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W_])/', $password))
        

        测试这段代码here

        【讨论】:

          猜你喜欢
          • 2016-05-12
          • 2014-12-19
          • 1970-01-01
          • 2020-08-16
          • 2018-05-07
          • 2020-07-25
          • 1970-01-01
          • 2021-12-23
          • 2020-12-26
          相关资源
          最近更新 更多