登录尝试和重定向
Login attempts and redirect
我已经为登录页面创建了一些代码。我想要的是,如果用户名和密码正确,则转到主页.html页面。否则,请停留在登录页面上,但只让用户尝试登录 3 次。我似乎无法弄清楚出了什么问题,因为它不计算我进行了多少次尝试,也不会在我正确时重定向到 Home.html 页面。
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()
}
}
<form action="" method="post" name="form1" onsubmit="checkdetails()">
<table bgcolor="white" width="500" border="0" align="center">
<col width="200">
<col width="200">
<tr>
<th colspan="2" align="center" bgcolor="grey">Login</th>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td colspan="2" align="center">Username</td>
</tr>
<tr>
<td colspan="2" align="center">
<label>
<input type="text" name="txtusername" id="txtusername" class="info" required/>
</label>
</td>
<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> </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> </td>
</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>
这是通过JavaScript完成任务的一种方法。我正在处理表单的提交并使用 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>
在客户端强制限制登录尝试是一个严重的安全问题。我编写了抓取工具,对页面上的JavaScript进行了逆向工程,并提交了有效的查找请求。程序员可以轻松地编写一个脚本,该脚本使用curl
不断尝试用户名/密码组合,直到它们成功,而无需担心您的JavaScript。在担心客户端的工作方式之前,应确保服务器阻止过多的登录尝试。
如果你想
在JavaScript中重定向用户,你应该这样做
function Redirect() {
window.location="http://target.url";
}
同化了这一点,在 JavaScript 中管理登录是愚蠢的,所以我认为你应该阅读一些解释客户端和服务器端执行代码之间差异的东西。
编辑。为了管理最多三次登录,您可以将数据存储在本地存储中
相关文章:
- 我尝试在登录脚本中使用ajax,但页面不会重定向
- 访问NeedLogin操作后不重定向到登录页面
- 登录后重定向,缓存页面问题-Javascript
- Framework7:登录重定向
- 在页面加载之前检查登录和重定向
- 如何在ASP.NET中创建重定向到登录页
- 意思是.js - 登录后重定向用户 - 在本地工作,但在部署时不起作用
- 登录尝试和重定向
- Laravel:在 ajax 请求的会话过期后重定向到登录
- 用户使用铁路由器登录后如何重定向
- 从登录页重定向到主页
- 登录后PHP登录脚本重定向不起作用
- 如何基于电子邮件地址域重定向到电子邮件登录页面
- Facebook登录重定向问题
- 如果用户尚未登录Angular JS,请重定向至登录页面
- 重定向“如果确认了电子邮件,则将用户重定向到登录页”
- 防止Angular网站上未经授权的用户在重定向到登录之前看到网站的最佳方式
- 如果未处于登录状态,如何重定向到登录页面,登录后重定向到原始页面
- AngularFire,登录身份验证和重定向并不完全有效
- 从angularjs重定向登录页面到欢迎页面