当前位置:首页 >> 新闻资讯 >> 技术百科

PHP用户系统开发:注册登录、会话控制与权限管理

作者:速科科技 浏览:23 发布日期:2026-10-19
[导读]:产品能展示、数据能存储了,接下来做网站最核心的交互功能——用户系统。注册、登录、会话控制和权限管理,是大多数企业网站后台的基础模块。第一步:创建用户表CREATETABLEusers(idINTAUTO_INCREMENTPRIMARYKEY,username&

产品能展示、数据能存储了,接下来做网站最核心的交互功能——用户系统。注册、登录、会话控制和权限管理,是大多数企业网站后台的基础模块。

第一步:创建用户表

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()函数之前不能有任何输出,包括空格和换行。



免责声明:转载请注明出处:http://www.aiwll.com/jishu/606.html

扫一扫高效沟通

多一份参考总有益处

网站策划和SEO优化策划方案

请填写下方表单,我们会尽快与您联系
感谢您的咨询,我们会尽快给您回复!