小明: 嘿,小红,我们学校的系统总是需要重复注册账号,能不能有一个统一的身份认证呢?
小红: 当然可以!我们可以建立一个统一的身份认证平台。这样,每个学生只需要一次注册,就可以在多个系统中使用。
小明: 那具体怎么实现呢?
小红: 我们可以从数据库开始,创建一个用户表。这个表会存储学生的学号、密码等信息。
CREATE TABLE student (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100)
);
小明: 看起来不错!那登录功能怎么实现呢?
小红: 首先,我们需要一个登录页面,用户输入用户名和密码后提交。
<form action="/login" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<button type="submit">Login</button>
</form>
小明: 登录成功后呢?
小红: 我们可以用session来保存用户的登录状态。每次用户访问受保护的页面时,检查session是否存在。
<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = $_POST['password'];
// 查询数据库
$stmt = $pdo->prepare("SELECT * FROM student WHERE username = :username");
$stmt->execute(['username' => $username]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
header('Location: dashboard.php');
exit();
} else {
echo "Invalid credentials.";
}
}
?>
小明: 这样的话,学生就可以在一个地方登录,并且在不同系统间切换了。
小红: 是的,这就是统一身份认证的核心思想。它简化了用户体验,也提高了系统的安全性。
]]>