2

我从另一个网页“ 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>

它仅在第二次输入密码时有效,但在第一次输入时无效。当您输入密码时,它说密码错误,提示您再次输入密码,然后通过。我需要一个脚本来提示我输入正确的密码,以防我输入错误的密码。任何人都可以帮助我编写代码,因为我是 JavaScript 的初学者。

4

4 回答 4

4

访问该链接时,您的代码似乎可以正常工作。

我知道你在学习。不过,您不应该像这样进行身份验证,因为您并没有真正保护任何东西。任何人都可以通过在任何浏览器中使用“查看页面代码”选项来阅读源代码(通常在页面上单击鼠标右键)。这意味着任何人都可以轻松获得您的密码

对于真正的身份验证,您应该使用服务器端语言(如 PHP)或Web 服务器配置的HTTP Digest 身份验证。Digest 使用 MD5 有点过时,但它比你正在做的要好一百万倍。

有关使用 Apache Web 服务器设置 HTTP Digest 的更多信息,请参阅:

http://httpd.apache.org/docs/2.2/mod/mod_auth_digest.html

对 Nginx 做同样的事情:

http://wiki.nginx.org/HttpAuthDigestModule

HTTP Basic 身份验证也有效,但它以纯文本形式从用户浏览器传输密码。使用 HTTP 摘要,密码是散列的。

知道您正在学习 JavaScript,最好的办法是配置您正在使用的 Web 服务器。由于大多数网络托管服务都使用 Apache,因此您很可能使用.htaccess 文件。您可以搜索“.htaccess http 摘要”以获取有关如何设置的教程。

一些网络托管服务具有控制面板,这些控制面板具有使用摘要/基本身份验证保护目录的功能。在很常见的 cPanel 中,它被称为“密码保护目录”

如果您更高级,我建议您使用 PHP,但这是一个相当复杂的主题。

于 2013-08-07T05:27:16.600 回答
3
//Add this to you script
function run(){
var password = prompt("Password Please");
//Change to your own Password
if(password != 'Sameer'){
document.body.innerHTML = '';
document.body.innerHTML = 'Password Failed! Reload to Renter Password';
}else{
alert('Success');
}
}
run();
于 2017-06-22T11:49:34.950 回答
0

试试这个..只需在错误案例中添加访问被拒绝提示...

  function passWord() 
    {
             var testV = 1;
             var pass1 = prompt('Please Enter Your Password',' ');
             while (testV < 3) 
             {
                    if (!pass1) 
                    {
                           history.go(-1);
                           var pass1 = prompt('Access Denied - Password Incorrect, Please Try     
                           Again.','Password');
                    }
                    else if (pass1.toLowerCase() == "letmein") 
                    {
                         alert('You Got it Right!');
                         window.open('protectpage.html');
                         break;
                    } 
                    testV+=1;

              }
              if (pass1.toLowerCase()!="password" & testV ==3) 
              history.go(-1);
              return " ";
    } 
于 2013-08-07T05:23:54.127 回答
0

我使用了与您完全相同的代码,问题是第一次不知道它在输入前添加了一个空格的原因。只要确保你没有那个就可以了。

于 2017-12-28T00:17:04.533 回答