我为登录页面创建了一些代码。我想要的是,如果用户名和密码正确,那么请转到Home.html页面。否则,请保持登录页面,但只允许用户尝试登录。我似乎无法弄清楚出了什么问题,因为它不计算我做了多少尝试,也没有重定向到Home.html页面,当我做对了。
sqlContext.udf.register("add", (i: Double) => i + 1)
// creating a table with Double and Int types:
sqlContext.createDataFrame(Seq((1.5, 4), (2.2, 5))).registerTempTable("table1")
// applying UDF to both types:
sqlContext.sql("SELECT add(_1), add(_2) FROM table1").show()
// output:
// +---+---+
// |_c0|_c1|
// +---+---+
// |2.5|5.0|
// |3.2|6.0|
// +---+---+

var counter = 0;
function checkdetails() {
var name = "",
password = "";
name = form1.txtusername.value
password = form1.txtpassword.value
if (name == "Shauna" && password == "8nss") {
window.alert("Both right")
window.location.replace("Home.html");
form1.txtusername.value = ""
form1.txtpassword.value = ""
} else if (name == "Shauna" && password != "8nss") {
window.alert("Incorrect Password.")
counter = counter + 1
window.alert(3 - counter + " attempts left")
form1.txtusername.value = ""
form1.txtpassword.value = ""
} else if (name != "Shauna" && password == "8nss") {
window.alert("Incorrect Username")
counter = counter + 1
window.alert(3 - counter + " attempts left")
form1.txtusername.value = ""
form1.txtpassword.value = ""
} else if (name != "Shauna" && password != "8nss") {
window.alert("Both Wrong")
counter = counter + 1
window.alert(3 - counter + " attempts left")
form1.txtusername.value = ""
form1.txtpassword.value = ""
}
if (counter == 3) {
window.alert("Incorrect details - Login failed")
window.close()
}
}

答案 0 :(得分:1)
这是通过JavaScript执行您尝试做的事情的一种方式。我正在处理表单的onsubmit并使用JavaScript来验证它并向处理程序返回true或false,具体取决于它的验证程度。我也删除了相当多的代码重复工作并简化了逻辑。
注意,这是处理登录尝试的登录和客户端验证的一种非常糟糕的方式,但鉴于它仅用于分配练习,这只是一种方法,可以满足您的需求。 /强>
<meta charset="UTF-8">
<script>
var remainingAttempts = 3;
function checkDetails() {
var name = form1.txtusername.value;
var password = form1.txtpassword.value;
console.log('name', name);
console.log('password', password);
var validUsername = validateUsername(name);
var validPassword = validatePassword(password);
if (validUsername && validPassword) {
alert('Login successful');
} else {
form1.txtusername.value = '';
form1.txtpassword.value = '';
remainingAttempts--;
var msg = '';
if (validPassword) {
msg += 'Username incorrect: ';
} else if (validUsername) {
msg += 'Password incorrect: ';
} else {
msg += 'Both username and password are incorrect: ';
}
msg += remainingAttempts + ' attempts left.';
alert(msg);
if (remainingAttempts <= 0) {
alert('Closing window...');
window.close();
}
}
return validUsername && validPassword;
}
function validateUsername(username) {
return username == 'Shauna';
}
function validatePassword(password) {
return password == '8nss';
}
</script>
<form id="form1" name="form1" method="post" action="Home.html" onsubmit="return checkDetails();">
<table>
<tr>
<th colspan="2" align="center" bgcolor="grey">Login</th></tr>
Username
<tr><td colspan="2" align="center"><label><input type="text" name="txtusername" id="txtusername" class="info" required /></tr>
<tr><td> </td></tr>
<tr><td colspan="2" align="center">Password</td></tr>
<tr>
<td colspan="2" align="center"><label>
<input type="password" name="txtpassword" id="txtpassword" class="info" required/>
</label></td>
</tr>
<tr>
<td colspan="2">
<label>
<input type="checkbox" name="terms" value="terms" id="terms"/>Remember Me</label>
</td>
</tr>
<br><br><br>
<tr>
</tr>
<tr>
<td>
<label>
<input type="submit" name="Login" id="Login" value="Login"/>
</label>
</td>
<td>
<label>
<input type="reset" name="Reset" id="Reset" value="Reset" />
</label>
</td>
</tr>
</table>
</form>
答案 1 :(得分:0)
如果您想在JavaScript中重定向用户,则应该
function Redirect() {
window.location="http://target.url";
}
同化这一点,愚蠢的管理登录JavaScript,所以我认为你应该阅读一些解释客户端和服务器端执行代码之间差异的东西。
EDIT。要管理最多三次登录,您可以将数据存储在Local Storage
中答案 2 :(得分:0)
对客户端上的登录尝试执行限制是严重的安全问题。我编写了一些反汇编程序,用于反向设计页面上的JavaScript并提交有效的查找请求。程序员可以轻松编写一个使用curl
的脚本来继续尝试用户名/密码组合,直到成功为止,而不必担心您的JavaScript。在担心客户端的工作方式之前,应确保服务器阻止过多的登录尝试。