Javascript循环正在崩溃我的网站

时间:2015-11-12 16:13:39

标签: javascript html

所以,我有一个关于Javascript和HTML的问题。下面我有我的代码,我不确定为什么,但每当我尝试运行它(即:点击提交),我的网站冻结。我现在设置它,以便它检查用户名/密码是否EXISTS,但它不必是2的组合。有人能帮我吗?

<!DOCTYPE html>
<html>
    <title> Welcome to my website!</title>
    <body>
        <form action="action_page.php" method = "post">
            Username: <input type="text" name="user">
            Password: <input type="password" name="pass">
            <input type="submit" value="Submit" onclick="myLogin()">    
         </form>
    <script type="text/javascript">
    function myLogin(){
            var usernames = ["rdoucett", "hovland"];
            var passwords = ["Rd200161", "hovland1"];
            usernames[5] = "stop";
            passwords[5] = "stop";
            var a = false;
            var b = false;
      var i = 1;
    while(a===false) {
        if(usernames[i] != form.user.value) {
            i++;
        }else if(usernames[i] == form.user.value){
            a=true;
        }else if(usernames[i] == "stop"){
            alert("Incorrect username or password!");
            a=true;
        };
    };
    i  = 1;
    while(b===false) {
        if(passwords[i] != form.pass.value) {
            i++;
        }else if(passwords[i] == form.pass.value){
            b=true;
        }else if(passwords[i] == "stop"){
            alert("Incorrect username or password!");
            b=true;
        };
    };
    if(b&&a===true){
    alert("Welcome " + document.getElementsByName("user") + "!");
    }else{
    alert("I do not recognize you " + document.getElementsByName("pass") + "!");
    };
};
    </script>
</body>

2 个答案:

答案 0 :(得分:5)

根本不使用while循环,如果是无效的用户名或密码,请退出myLogin函数。

请注意,您在此处所写的内容完全不安全。任何访问您网站的人都有基本的技术知识,可以看到您的完整用户名和密码列表。

答案 1 :(得分:2)

我经常更改你的代码,但我认为这是你想要的。在您的场景中,除了一些错误之外,任何有效的用户名和任何有效的密码都会匹配(即user = "rdoucett"psw= "hovland1")。

function myLogin(){
    var usernames = ["rdoucett", "hovland"];
    var passwords = ["Rd200161", "hovland1"];
    var username;
    for (var i = 0; i < usernames.length; i++) {
        if (usernames[i] == form.user.value) {
            username = usernames[i];
            break;
        }
    }
    if (!username || passwords[i] != form.pass.value) {
        alert("Incorrect username or password!");
    }
    else {
        alert("Welcome " + document.getElementsByName("user") + "!");
    }
};

从安全的角度来看,正如已经说过的那样,这是非常不安全的。您应该将HTMLJS视为任何客户都可以看到的信息。所以这种功能就是你必须做的服务器端。

另请注意,警报不会避免提交的形式。如果您想避免这种情况,则应添加return false;