编写登录页面,页面中有userID和password,前端校验是userID不能出现字母,密码必须6位;校验通过 跟数据库数据比较,如果存在该人将所有user数据展示到表格回到浏览器;否则弹框"登录失败"跳转回原来的登录页面
时间: 2024-02-28 08:57:07 浏览: 80
下面是一个完整的登录页面示例,包括了前端校验和后端数据比较的逻辑:
```html
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<style>
form {
display: flex;
flex-direction: column;
align-items: center;
margin-top: 50px;
}
input {
margin-bottom: 10px;
}
button {
margin-top: 10px;
}
.error {
color: red;
margin-bottom: 10px;
}
table {
margin-top: 50px;
border-collapse: collapse;
}
td, th {
padding: 8px;
border: 1px solid black;
}
</style>
</head>
<body>
<form>
<label for="userID">User ID:</label>
<input type="text" id="userID" name="userID">
<label for="password">Password:</label>
<input type="password" id="password" name="password">
<button type="submit">Login</button>
<p class="error" id="error"></p>
</form>
<table id="userTable"></table>
<script>
const form = document.querySelector('form');
const userIDInput = document.querySelector('#userID');
const passwordInput = document.querySelector('#password');
const errorText = document.querySelector('#error');
const userTable = document.querySelector('#userTable');
form.addEventListener('submit', e => {
e.preventDefault();
const userID = userIDInput.value.trim();
const password = passwordInput.value.trim();
if (/^[0-9]+$/.test(userID) && password.length === 6) {
// validation passed
const xhr = new XMLHttpRequest();
xhr.open('POST', '/login');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = () => {
if (xhr.status === 200) {
const users = JSON.parse(xhr.response);
if (users.length > 0) {
// show user table
userTable.innerHTML = `
<thead>
<tr>
<th>User ID</th>
<th>Username</th>
<th>Email</th>
<th>Phone</th>
</tr>
</thead>
<tbody>
${users.map(user => `
<tr>
<td>${user.userID}</td>
<td>${user.username}</td>
<td>${user.email}</td>
<td>${user.phone}</td>
</tr>
`).join('')}
</tbody>
`;
} else {
alert('Login failed.');
window.location.href = '/login.html';
}
} else {
alert('Request failed.');
}
};
xhr.onerror = () => {
alert('Request failed.');
};
xhr.send(JSON.stringify({userID, password}));
} else {
// validation failed
errorText.textContent = 'User ID must be all numbers, password must be 6 characters long.';
}
});
</script>
</body>
</html>
```
解释:
- HTML 部分包含了登录表单、错误提示信息的标签,以及用于显示用户信息的表格。
- CSS 部分设置了表单元素的样式、错误提示信息的样式、以及表格的样式。
- JavaScript 部分通过使用 `querySelector` 方法获取表单元素和错误提示信息的引用,以及用于显示用户信息的表格的引用,然后监听表单的提交事件,进行前端校验和后端数据比较。
- 前端校验逻辑:当用户填写的 User ID 只包含数字且 Password 的长度为 6 时,校验通过,否则提示错误信息。
- 后端数据比较逻辑:使用 AJAX 技术向后端发送 POST 请求,携带用户填写的 User ID 和 Password,后端根据这些信息从数据库中查询对应的用户数据,如果存在该用户,则将所有用户数据返回给前端,将用户表格显示出来;否则弹出提示框“登录失败”,并跳转回原来的登录页面。
阅读全文