我正在尝试创建一个网页,在页面加载之前要求用户输入密码。输入正确的密码后,页面将继续加载。如果键入的密码不正确,它将继续询问用户密码,直到他们正确。该网页目前不会要求输入密码并直接进入该页面。
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);}
答案 0 :(得分:2)
设置登录页面和目标页面。登录页面应提示输入密码,如果正确,请将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循环。正如我们的老师所说,这样做是为了锻炼。
注意关于此的评论,根本不提供任何安全性。 (至少)有两个原因导致这不安全。首先,任何知道&#34;查看来源的人都可以看到密码。&#34;第二个是,一旦知道realpage.html
的URL,就可以直接导航到它,绕过密码质询。
我认为你这样做是为了练习,现在你有一些没有错误执行的东西,你将从中学习。最简单的网络有效密码协议是HTTP Basic Access Authentication。当您从本练习中学到所有知识后,请阅读有关基本访问身份验证的内容。
答案 1 :(得分:0)
由于未检查对话框的取消条件,上述代码段在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;