我从另一个网页“http://www.javascriptkit.com/script/cut10.shtml”获取了以下代码。
<SCRIPT>
function passWord() {
var testV = 1;
var pass1 = prompt('Please Enter Your Password',' ');
while (testV < 3) {
if (!pass1) history.go(-1);
if (pass1.toLowerCase() == "letmein") {
alert('You Got it Right!');
window.open('protectpage.html');
break;
}
testV+=1;
var pass1 = prompt('Access Denied - Password Incorrect, Please Try Again.','Password');
}
if (pass1.toLowerCase()!="password" & testV ==3) history.go(-1);
return " ";
}
</SCRIPT>
<CENTER>
<FORM>
<input type="button" value="Enter Protected Area" onClick="passWord()">
</FORM>
</CENTER>
Run Code Online (Sandbox Code Playgroud)
仅在第二次输入密码时有效,第一次输入密码时无效。当您输入密码时,它会提示您密码错误,提示您再次输入密码,然后就可以通过。我需要一个脚本来提示我输入正确的密码,以防我输入错误的密码。由于我是 JavaScript 初学者,有人可以帮助我编写代码吗?
访问该链接时,您的代码似乎可以正常工作。
我知道你正在学习。不过,您不应该进行这样的身份验证,因为您并没有真正保护任何内容。任何人都可以通过使用任何浏览器中的“查看页面代码”选项(通常右键单击页面)来阅读源代码。这意味着任何人都可以轻松获取您的密码。
对于真正的身份验证,您应该使用服务器端语言(例如 PHP)或由 Web 服务器配置的HTTP 摘要身份验证。Digest 有点过时了,因为它使用 MD5,但它比你正在做的好一百万倍。
有关使用 Apache Web 服务器设置 HTTP 摘要的更多信息,请参阅:
http://httpd.apache.org/docs/2.2/mod/mod_auth_digest.html
对于 Nginx 执行同样的操作:
http://wiki.nginx.org/HttpAuthDigestModule
HTTP基本身份验证也可以工作,但它以纯文本形式从用户浏览器传输密码。通过 HTTP 摘要,密码会被散列化。
知道您正在学习 JavaScript,最好的选择是配置您正在使用的 Web 服务器。由于大多数网络托管服务都使用 Apache,因此您很可能可以使用.htaccess 文件。您可以搜索“.htaccess http 摘要”以获取有关如何进行设置的教程。
某些网络托管服务具有控制面板,该面板具有使用摘要/基本身份验证保护目录的功能。在cPanel中,这很常见,它被称为“密码保护目录”。
如果您更高级,我建议您使用 PHP 来完成,但这是一个相当复杂的主题。