dqnk57224 2015-05-01 22:01
浏览 40
已采纳

密码验证 - 遗留代码

The following code validates a new user password by asking them to confirm their password by entering it twice:

// search to see if is a vvalid file path
                if (($val["type"] == "password") && !strstr($key , "_confirm")) {
                    $name = $val["name"] ? $val["name"] : $key ;

                    if ($input[$name] != $input[$name . "_confirm"]) {
                        //preparing the message
                        $fields["error"] = "Password and confirmation doesn't match.";
                        $fields["errors"][$name] = 1;
                        $fields["errors"][$name . "_confirm"] = 1;
                        $fields["values"] = $input;
                    }

                }

I would like to include additional validation (i.e., password contains at least 1 number and 1 letter, special characters [!@#$%], must be at least 8 characters in length.

What would be the proper code syntax to nest with the above code? THX

  • 写回答

1条回答 默认 最新

  • dsf6565 2015-05-01 22:20
    关注

    To add the validation, you need to find the Regex you like, e.g.

    http://regexlib.com/Search.aspx?k=password&AspxAutoDetectCookieSupport=1

    Then use that regex in your code (replace $regEx with your choice):

    if (($val["type"] == "password") && !strstr($key , "_confirm")) {
        $name = $val["name"] ? $val["name"] : $key ;
    
        if ($input[$name] != $input[$name . "_confirm"]) {
            //preparing the message
            $fields["error"] = "Password and confirmation doesn't match.";
            $fields["errors"][$name] = 1;
            $fields["errors"][$name . "_confirm"] = 1;
            $fields["values"] = $input;
        }
        if( !preg_match( $regEx, $input[$name] ) ) {
            $fields["error"] = "Password must contain...";
            $fields["errors"][$name] = 1;
            $fields["values"] = $input;
        }
    }
    

    For one-upper, one-lower, and one-digit w/ min 8 chars:

    $regEx = '/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/';
    

    Add in some special-char requirements:

    $regEx = '/^(?=.*[!@#$%])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等