[英]Password check before page loads
我正在尝试制作一个网页,在页面加载之前要求用户输入密码提示。 输入正确的密码后,页面将继续加载。 如果输入的密码不正确,它将不断要求用户输入密码,直到他们正确为止。 该网页目前不要求输入密码并直接进入该页面。
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>
设置登录页面和目标页面。 登录页面应提示输入密码,如果正确,则将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循环。 正如我们的老师所说,这样做是一项练习。
请注意有关完全不提供任何安全性的注释。 这是不安全的,至少有两个原因。 首先,该密码对于任何了解“查看源代码”的人都是可见的。 第二个是,一旦知道realpage.html
的URL, realpage.html
可以绕过密码挑战直接导航到该URL。
我假设您是在做练习,现在您可以执行一些没有错误的操作,您将从中学习。 Web上最简单的有效密码协议是HTTP Basic Access Authentication 。 当您从本练习中学到了所有知识后,请阅读有关基本访问身份验证的信息。
由于未检查对话框的取消条件,以上代码段在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;
如果密码正确,这只会询问您一次密码,否则它将继续询问。 这是递归函数。
window.onload=passwordCheck;
function passwordCheck()
{
var password = prompt("Please enter the password.");
if (password !== "bello")
{
passwordCheck();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.