





产品能展示、数据能存储了,接下来做网站最核心的交互功能——用户系统。注册、登录、会话控制和权限管理,是大多数企业网站后台的基础模块。
第一步:创建用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
role ENUM('admin','editor') DEFAULT 'editor',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
第二步:注册功能
密码不能明文存储,需要用password_hash()加密:
<?php
require 'db.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = trim($_POST@['username']);
$password = $_POST@['password'];
if (strlen($username) < 3 || strlen($password) < 6) {
die("用户名至少3位,密码至少6位");
}
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
try {
$stmt->execute([$username, $hashedPassword]);
echo "注册成功,请登录";
} catch (PDOException $e) {
echo "用户名已存在";
}
}
?>第三步:登录功能
<?php
session_start();
require 'db.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = trim($_POST@['username']);
$password = $_POST@['password'];
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
$_SESSION['role'] = $user['role'];
header("Location: dashboard.php");
exit;
} else {
echo "用户名或密码错误";
}
}
?>第四步:会话控制与权限管理
登录成功后,将用户信息存入$_SESSION。在需要登录才能访问的页面上,检查Session是否存在:
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit;
}
?>权限管理通过检查$_SESSION['role']实现:
<?php
if ($_SESSION['role'] !== 'admin') {
die("您没有权限访问此页面");
}
?>第五步:退出登录
<?php
session_start();
session_destroy();
header("Location: login.php");
exit;
?>实操建议
注册一个测试账号,完整走一遍注册、登录、访问受保护页面、退出的流程。如果登录后跳转失败,检查Session是否开启、header跳转前是否有输出。header()函数之前不能有任何输出,包括空格和换行。