【问题标题】:How to make a program for password authentication如何制作密码验证程序
【发布时间】:2020-03-18 01:41:00
【问题描述】:

我一直在研究这个程序,但它只是停止工作,我无法弄清楚这个程序。我需要该程序确保密码超过 8 个字符,以字母开头,并且至少使用一个数字。我必须使用下面的大部分代码,例如document.write和prompt,因为这是我们在课堂上使用的。

代码如下:

<html>
    <body>
        <head>
        <script type="text/javascript">
            //Counting how many X's will cover the charachters
            function xCount(){
              var x = 0
                for(x=0; i<=password.length; x++){
                    document.write ("X")
                 return x
                }

            }
        </script>    
        </head>


        <script type="text/javascript">

            //Declaring variables
        var password = prompt ("Please Enter Your New Password." , "Enter Here")
        var passwordLength = parseInt(password.length)
        var passLength = 0
        var passwordLetter = 0
        var passwordNumber = 0


            //Making sure password is more then 8 charachters
        if(password.length >= 8){
                passLength = 1
        }

        if(password.length < 8){
                alert ("Invalid - Password is too Short")
                passLength = 0
        }

            //Checking for the First Letter being a Letter
        if(password.substr(0,1)>= "A" && password.substr(0,1)<="Z"){
                passwordLetter = 1
        }

        else{
                alert ("Invalid- Password does not start with a letter")
                passwordLetter = 0
        }

            //Checking if the password has a number in it
        for(i=0; i<=password.length; i++){
            password = parseInt (password)
            if (password.substr(i,1)>= 0 && password.substr(i,1)<=9){
                passwordNumber = 1
                }

                else{
                alert ("Ivalid- Password does not have a number.")
                passwordNumber = 0
                    }
        }


        if(passLength == 1 && passwordLetter == 1 && passwordNumber == 1){
            xCount()
            document.write ("Your password is " + xCount() + " has been accepted.")}



        </script>
    </body>
</html>

【问题讨论】:

  • 检查浏览器开发工具是否有错误 - 有没有?
  • 你的班级不让你使用正则表达式吗?
  • 另外,console.log 不是 document.write。关于 dom 的文档写作可能会发生坏事(我看到有人告诉你这样做。告诉他们我说这很糟糕,哈哈)
  • 当我将它放入小提琴时,您发布的内容中有语法错误。它显示在开发控制台中。检查你的代码。提示:w3schools.com/jsref/jsref_substring.asp

标签: javascript function passwords


【解决方案1】:

您熟悉正则表达式吗? 如果你不是 W3 有一些很棒的资源。

如果我是你,我会做这样的事情。

function CheckPassword(inputtxt) 
{ 
var passw=  /^[A-Za-z]\w{7,14}\d$/;  // this is a regex
if(inputtxt.value.match(passw))      // here you check the input against that regex
{ 
return true;
}
else
{ 
return false;
}
}

如果您需要进一步的帮助来理解这一点,请告诉我,我可以提供帮助。 您可以使用此链接更好地使用和理解正则表达式 https://regex101.com/

【讨论】:

  • 您可以使用大量的正则表达式变体来完成此操作。我只是分享一些简单的东西来表达观点。您可以使用类似 ^[A-Za-z](?=.*[az])(?=.*).{7,16}$ .. 这里的重点是完成此任务的最佳方法是通过使用正则表达式。
  • 在没有给出确切和细节的情况下,以某种方式回答问题不会造成混淆。说明并没有说数字必须在中间,就像它没有说它必须在末尾一样。我给出了答案以帮助不要混淆。 \d 比 ^[A-Za-z](?=.*[a-z])(?=.*).{7,16}$.然后,他可以准确地弄清楚他想要东西的方式/位置。
  • 我没有满足什么要求?我的回答会满足所有人的。
  • 我说的是你降级的第一个答案。第二个,我写了超过 8 个字符,我知道它不符合要求。
  • 我猜我们彼此不理解。我的第一个模式至少有 8 个数字,它需要以字母开头,并且至少需要一个数字。他没有说它必须在中间或最后。所以我冒昧地做了最简单的表达(为了他的理解)。现在,如果说明说数字必须在任何地方,那么您是对的。说明没有这么说,所以我可以执行规则。
【解决方案2】:

您需要检查开发控制台是否有错误。您会看到“substr”不是一个函数。正确的函数是substring。修复这些后,您会注意到小写字母将被视为不正确。查看 ascii 代码,大小写字母之间有非字母。因此,您需要进行两项检查,一项针对 A-Z,一项针对 a-z。 此外,您重新定义了“密码”变量,这使它感到困惑。我们需要做一个不同的东西来调用第二个。它是一个数字,所以你不能在那里使用子字符串。检查它是否为 NaN。 最后,因为它处于循环中,所以它会发出很多警报。让我们通过中断无效输入来解决这个问题。

试试这个。

<html>
<body>
    <head>
    <script type="text/javascript">
        //Counting how many X's will cover the charachters
        function xCount(){
          var x = 0
            for(x=0; i<=password.length; x++){
                document.write ("X")
             return x
            }

        }
    </script>    
    </head>


    <script type="text/javascript">

        //Declaring variables
    var password = prompt ("Please Enter Your New Password." , "Enter Here")
    var passwordLength = parseInt(password.length)
    var passLength = 0
    var passwordLetter = 0
    var passwordNumber = 0


        //Making sure password is more then 8 charachters
    if(password.length >= 8){
            passLength = 1
    }

    if(password.length < 8){
            alert ("Invalid - Password is too Short")
            passLength = 0
    }

    //Checking for the First Letter being a Letter
    var firstchar=password.substring(0,1);
    if((firstchar >= 'A' && firstchar <= "Z") || (firstchar >= 'a' && firstchar <= "z")){
            passwordLetter = 1
    }

    else{
         alert ("Invalid- Password does not start with a letter")
          passwordLetter = 0
    }

        //Checking if the password has a number in it
    for(i=0; i<=password.length; i++){
        passwordNumber = parseInt (password)
        console.log(passwordNumber);
        if (! isNaN(passwordNumber)){
            passwordNumber = 1
            }

        else{
            alert ("Invalid- Password does not have a number.");
            passwordNumber = 0;
            break;
            }
    }


    if(passLength == 1 && passwordLetter == 1 && passwordNumber == 1){
        xCount()
        document.write ("Your password is " + xCount() + " has been accepted.")}



    </script>
</body>

【讨论】:

  • 我不能保证这是 100% 正确的,但它应该能让你继续前进。
  • 感谢您的帮助!只需要努力寻找数字和最终显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 2014-01-03
  • 2019-05-24
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
相关资源
最近更新 更多