所以,我有一个关于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>
答案 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") + "!");
}
};
从安全的角度来看,正如已经说过的那样,这是非常不安全的。您应该将HTML
和JS
视为任何客户都可以看到的信息。所以这种功能就是你必须做的服务器端。
另请注意,警报不会避免提交的形式。如果您想避免这种情况,则应添加return false;
。