密码保护页面

时间:2013-08-07 05:15:09

标签: javascript html

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

答案 0 :(得分:3)

访问链接时,您的代码似乎工作

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

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

有关使用Apache Web服务器设置HTTP摘要的详细信息,请参阅:

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

对于Nginx做同样的事情:

http://wiki.nginx.org/HttpAuthDigestModule

HTTP Basic authentication也有效,但它以纯文本形式从用户的浏览器传输密码。使用HTTP摘要,密码为hashed

知道您正在学习JavaScript,最好的办法是配置您正在使用的Web服务器。由于大多数Web托管服务都使用Apache,因此您最有可能使用.htaccess file。您可以搜索".htaccess http digest"以获取有关如何进行设置的教程。

某些网络托管服务的控制面板具有使用Digest / Basic身份验证保护目录的功能。在cPanel中,这很常见,它被称为"Password Protect Directories"

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

答案 1 :(得分:2)

//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();

答案 2 :(得分: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 " ";
    } 

答案 3 :(得分:0)

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