【问题标题】:Password check before page loads页面加载前密码检查
【发布时间】:2014-09-20 21:49:14
【问题描述】:

我正在尝试制作一个网页,在页面加载之前要求用户输入密码提示。输入正确的密码后,页面将继续加载。如果输入的密码不正确,它将不断要求用户输入密码,直到他们正确为止。该网页目前不要求输入密码并直接进入该页面。

HTML:

<html>
<head>
<title>Password Page</title>
<script type="text/javascript" src="password.js"></script>
</head>
<body onload="passwordCheck()">
<h1>How'd you know the password?</h1>
</body>
</html>

JavaScript:

// Password: ilikepie
function passwordCheck(){
var password = prompt("Please enter the password.");

if (password.value=="ilikepie"){
window.alert("Password correct!");
else{
while(password.value !="ilikepie"){
window.alert(password);}

【问题讨论】:

  • 我希望这只是一个练习,并不是为了真正阻止任何人。
  • 好吧,你已经将你的 JavaScript 连接到 onload,所以它不会在页面加载后 运行,因为这是你告诉它的。我认为还有更严重的问题。
  • 语法错误也无济于事。我建议通过缩进代码块来更好地布置你的 javascript。然后你就可以更好地理解它实际上在做什么。
  • erm,任何查看页面来源的人都会知道密码!
  • 我喜欢你也设法在评论中写下密码......因为它还不够明显

标签: javascript html


【解决方案1】:

设置登录页面和目标页面。登录页面应提示输入密码,正确后将window.location更改为真实页面。

function passwordCheck(){
    var password = prompt("Please enter the password.");
    if (password==="ilikepie"){
        window.location="realpage.html";
    } else{
        while(password !=="ilikepie"){
            password = prompt("Please enter the password.");
        }
        window.location="realpage.html";
    }
}
window.onload=passwordCheck;

您实际上可以摆脱第一次检查而只使用 while 循环。正如我们老师所说,这样做是一种练习。

注意cmets,这根本不提供任何安全性。这不安全有(至少)两个原因。首先是任何知道“查看源代码”的人都可以看到密码。第二个是,一旦知道realpage.html的URL,就可以直接导航到它,绕过密码挑战。

我假设您将这样做作为一个练习,并且现在您有一些可以正确执行的东西,您将从中学习。最简单的网络有效密码协议是HTTP Basic Access Authentication。当您从本练习中学到了所有知识后,请阅读基本访问身份验证。

【讨论】:

    【解决方案2】:

    上面代码的sn-p由于没有勾选对话框的取消条件,在while循环中创建了一个无限循环。为了避免这种情况,需要进行如下更改:

    function passwordCheck(){
        var password = prompt("Please enter the password.");
        if (password==="ilikepie"){
            window.location="realpage.html";
        } else if (password!='' && password!=null) {
            while(password !=="ilikepie"){
                password = prompt("Please enter the password.");
            }
            window.location="realpage.html";
        }
    }
    window.onload=passwordCheck;
    

    【讨论】:

    • 请注意,根据您的浏览器,对话框中的“取消”按钮会返回空字符的空字符串。
    【解决方案3】:

    如果密码正确,它将只询问您一次密码,否则它将继续询问。这是递归函数。

    window.onload=passwordCheck;
    function passwordCheck()
    {
        var password = prompt("Please enter the password.");
        if (password !== "bello")
        {
            passwordCheck();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 2018-04-28
      • 2011-03-20
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      相关资源
      最近更新 更多