【问题标题】:password not working help needed密码不起作用需要帮助
【发布时间】:2016-06-26 21:58:19
【问题描述】:

我一直在研究一个密码来保护我的网页,这是一个实验页面,因为我是 html、css 和 java 的新手。

下面是密码的代码。有人能帮我吗?密码似乎将输入到提供的空间中的任何内容都视为真实。我只需要一个密码就可以工作,但我不知道该怎么做。以下是密码的代码,任何帮助将不胜感激

 <script>
    function checkPassword(){
    var password = document.getElementById("PasswordBox");
    var passwordText = password.value;
    if(passwordText == "pheasey101"){
    return true;

    alert("access denied! Incorrect password!!");
    return false;
    }

【问题讨论】:

  • 您确实意识到,如果您的密码以纯文本形式发送到浏览器,任何人都可以读取您的密码。按 F12,他们可以阅读您的脚本!
  • 迈克。我现在也意识到了这个问题。我会努力解决这个问题,但谢谢

标签: javascript passwords


【解决方案1】:

如果没有您所有的相关代码,将很难判断,但我怀疑您遇到了 JavaScript 的真/假值。如前所述,缺少右大括号意味着您的函数可能没有按照您认为的那样做。同时,一切都返回 true 的事实意味着您可能在其他地方得到了这个:

if (checkPassword){
    //the thing that always happens
}

...或者这个:

if (checkPassword()){
    //the thing that always happens
}

当你像上面那样使用隐式相等时,JavaScript 使用类型强制来评估真/假。由于您的函数“checkPassword”似乎没有返回默认值,JavaScript 将检查它是否作为引用存在于内存中,然后评估为 true。

if (checkPassword() == true){
    //a better sort of check, but it also uses type coercion
    //if checkPassword returns the string "true", this will pass
}

if (checkPassword() === true){
    //an even better check; no type coercion occurs
}

修复您的函数,使其始终返回一个值,然后使用严格相等来评估该结果。

【讨论】:

  • 感谢您的帮助
【解决方案2】:

我对javascript不太确定,但是在java中比较两个字符串时,你必须使用.Equals()而不是==,例如,在java中你的代码应该是:

if(passwordText.Equals("pheasey101")) {
    return true;
}

我注意到您遇到的另一个问题是您缺少一个花括号,在 if 语句之后您打开花括号,但您从不关闭它,保持警报部分并在 if 语句中返回 false 部分。这也意味着该功能没有明确的结束。在 return true 之后,添加右花括号,看看是否可以解决它,否则尝试使用 .Equals 如果 javascript 中有这样的东西。

希望这会有所帮助。

【讨论】:

  • 不,在 JavaScript 中使用 '==' 很好。使用 '===' 更好。
  • 感谢您的帮助
猜你喜欢
  • 2015-08-27
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多