【问题标题】:How to turn this Password validation right?如何正确打开此密码验证?
【发布时间】:2022-11-22 23:11:47
【问题描述】:
var password=123;
var input;
var opp=0;

for(var t=0;t<=2;t++){
  if(password!=input && t<=2){
    input=prompt("enter your password");
  }
  else{
    opp++;
  }
}
if(opp!=0){
  alert("success");
}
else if(opp<1){
  alert("fail");
}

我希望它是一个只能尝试三次的密码验证。 但即使在第三次尝试中输入正确的密码,它也会失败。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    让我们开始说这应该只是一个说教练习。

    我建议您放弃 for 循环策略并将逻辑嵌入 while 循环中,只要 attempt 计数器变量为 &lt;=3,该循环就会一直运行。

    直到输入的密码仍然不符合预期的密码,它会在说fail 后不断要求输入新密码,最多尝试 3 次。

    如果输入的密码匹配,它只会提醒用户说success 并退出循环。

    当然正如其他用户所说,这种方法在安全方面是非常错误的,因为预期的密码是以明文形式存储的。

    作为旁注,定义为文字的预期密码应该是字符串文字而不是数字。

    let password = '123';
    let attempt = 0;
    let input;
    
    let wasSuccess = false;
    
    while(++attempt<=3){
      input = prompt("enter your password");
      if(input == password){
        wasSuccess = true;
        alert('success');
        break;
      }else{
        alert('fail');
      }
    }
    
    if(wasSuccess){
      //perform any logic expected to run after successfully logged in
    }

    【讨论】:

    • 哇,非常感谢,我会在 while 循环中再试一次
    【解决方案2】:

    我不确定您要做什么,这完全不安全。

    要轻松破解您的密码挑战,请单击浏览器上的“查看源代码”,然后查找密码。

    请使用更好的身份验证,最好是在服务器上,而不是在 javascript 中。

    当然,您可以使用 Javascript,但不能用于实际的密码检查。


    由于 OP 只是在尝试并且永远不会在生产环境中使用它,因此这是一段有效的脚本:

    var password= "123";
    var input;
    var tries=1;
    var maxTries = 5;
    var passed = false;
    
    while ( (!passed) && (tries <= maxTries) ){
        input=prompt("enter your password (attempt nr "+tries+")");
        if (input === password){
            passed = true; // Yeah!
        } else {
            tries = tries + 1;
        }
    }
    
    if (passed){
        alert("success");
    } else {
      alert("fail");
    }
    

    【讨论】:

    • 哦,我只是在练习。我想不通
    • 喔好吧。如果您保证永远不会使用这种方法,我将发布一个工作版本。 ;-)
    猜你喜欢
    • 2011-04-25
    • 2020-09-28
    • 1970-01-01
    • 2013-09-18
    • 2015-04-03
    • 2023-02-23
    • 2014-10-18
    • 2015-02-19
    • 2014-04-29
    相关资源
    最近更新 更多