设计一个用户登录页面,用户可以输入用户名和密码,让用户选择“是否保存登录状态”,如果账号和密码相符,则登录成功,进入欢迎页面,否则不跳转并显示“登录错误”的信息。在登录时,如果保存了登录状态,下次登录时若访问登录页面则进入欢迎页面,如果用户没有经过登录就访问欢迎页面,则跳转到登录页面。要求自行设计一个数据库表保存用户的相关信息。
时间: 2023-11-25 07:06:53 浏览: 344
用户登陆界面设计,包括用户名及密码的输入
5星 · 资源好评率100%
好的,这是一个很常见的需求,我可以给您提供一个基本的思路来实现这个功能。
首先,我们需要设计一个用户表用来保存用户的相关信息,包括用户名、密码、是否保存登录状态等字段。可以使用 MySQL 数据库来创建这个表,以下是一个简单的示例:
```sql
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
remember_me TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
```
接下来,我们需要在登录页面中添加一个表单,让用户输入用户名和密码,并且可以选择是否保存登录状态。表单的 HTML 代码大致如下:
```html
<form action="login.php" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<br>
<label for="remember_me">Remember me:</label>
<input type="checkbox" id="remember_me" name="remember_me">
<br>
<button type="submit">Login</button>
</form>
```
在提交表单时,我们需要将用户名、密码和是否保存登录状态这三个字段发送到服务器。可以使用 PHP 来处理表单提交并验证用户信息,以下是一个简单的示例:
```php
<?php
// 连接数据库
$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'mydb';
$conn = mysqli_connect($host, $username, $password, $dbname);
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
$remember_me = $_POST['remember_me'] ? 1 : 0;
// 验证用户信息
$query = sprintf("SELECT * FROM users WHERE username='%s' AND password='%s'",
mysqli_real_escape_string($conn, $username),
mysqli_real_escape_string($conn, $password));
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) === 1) {
// 登录成功,设置登录状态
$row = mysqli_fetch_assoc($result);
if ($remember_me) {
setcookie('user_id', $row['id'], time() + 604800); // 保存一周
}
session_start();
$_SESSION['user_id'] = $row['id'];
header('Location: welcome.php');
exit;
} else {
// 登录失败,显示错误信息
$error = 'Login error';
}
}
?>
```
在上述代码中,我们首先连接了 MySQL 数据库,并且在处理表单提交时,从 `$_POST` 中获取了用户名、密码和是否保存登录状态这三个字段。接着,我们使用 `mysqli_real_escape_string()` 函数来转义字符串,以防止 SQL 注入攻击。然后,我们执行了一个查询语句来验证用户信息,并且根据查询结果来设置登录状态。如果登录成功,则将用户 ID 存入 session 和 cookie 中,然后跳转到欢迎页面。如果登录失败,则显示错误信息。
最后,我们需要在欢迎页面中验证登录状态,如果用户没有经过登录就访问欢迎页面,则跳转到登录页面。可以使用以下 PHP 代码实现:
```php
<?php
// 验证登录状态
session_start();
if (!isset($_SESSION['user_id']) && !isset($_COOKIE['user_id'])) {
header('Location: login.php');
exit;
}
// 显示欢迎信息
if (isset($_SESSION['user_id'])) {
$user_id = $_SESSION['user_id'];
} else {
$user_id = $_COOKIE['user_id'];
}
$query = sprintf("SELECT * FROM users WHERE id=%d", $user_id);
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
echo "Welcome, " . $row['username'] . "!";
?>
```
在上述代码中,我们首先调用了 `session_start()` 函数来启用会话机制,然后判断用户是否已经登录。如果用户没有经过登录就访问欢迎页面,则跳转到登录页面。接着,我们从 session 或 cookie 中获取用户 ID,并且使用它来查询用户信息。最后,我们显示欢迎信息,其中包括用户名。
阅读全文