当前位置:首页 > PHP

php实现网页登录权限

2026-02-28 01:48:50PHP

PHP 实现网页登录权限

数据库设计

创建用户表存储登录信息,至少包含用户名和密码字段。密码应使用哈希算法(如 password_hash)存储。

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

用户注册

处理用户注册时对密码进行哈希处理,示例代码:

$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

$stmt = $pdo->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
$stmt->execute([$username, $password]);

用户登录验证

验证用户输入的用户名和密码是否匹配数据库记录:

$username = $_POST['username'];
$password = $_POST['password'];

$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch();

if ($user && password_verify($password, $user['password'])) {
    $_SESSION['user_id'] = $user['id'];
    header("Location: dashboard.php");
} else {
    echo "Invalid username or password";
}

会话管理

使用 PHP 会话跟踪用户登录状态:

session_start();

// 检查用户是否登录
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit;
}

权限控制

根据用户角色或权限限制访问特定页面:

// 假设用户表有 role 字段
$stmt = $pdo->prepare("SELECT role FROM users WHERE id = ?");
$stmt->execute([$_SESSION['user_id']]);
$user = $stmt->fetch();

if ($user['role'] !== 'admin') {
    header("Location: unauthorized.php");
    exit;
}

密码重置

实现密码重置功能,通常包括生成令牌和发送重置链接:

// 生成令牌并存储
$token = bin2hex(random_bytes(32));
$stmt = $pdo->prepare("UPDATE users SET reset_token = ?, token_expires = DATE_ADD(NOW(), INTERVAL 1 HOUR) WHERE email = ?");
$stmt->execute([$token, $_POST['email']]);

// 发送包含令牌的邮件
$resetLink = "https://example.com/reset-password.php?token=$token";
mail($_POST['email'], "Password Reset", "Click here to reset: $resetLink");

安全注意事项

  • 使用 HTTPS 保护数据传输
  • 对用户输入进行验证和过滤
  • 设置会话过期时间
  • 防止暴力破解,可实施登录尝试限制
  • 定期更新密码哈希算法

完整登录示例

以下是一个简单的登录表单处理示例:

php实现网页登录权限

// login.php
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
    $password = $_POST['password'];

    $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
    $stmt->execute([$username]);
    $user = $stmt->fetch();

    if ($user && password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        header("Location: dashboard.php");
        exit;
    } else {
        $error = "Invalid credentials";
    }
}
<!-- login form -->
<form method="post">
    <input type="text" name="username" required>
    <input type="password" name="password" required>
    <button type="submit">Login</button>
    <?php if (isset($error)) echo "<p>$error</p>"; ?>
</form>

标签: 权限网页
分享给朋友:

相关文章

vue权限实现

vue权限实现

Vue 权限实现方案 在 Vue 项目中实现权限控制通常涉及前端路由、按钮/组件级权限、动态菜单等方面。以下是几种常见的实现方式: 基于路由的权限控制 通过路由守卫拦截未授权访问,结合动态路由添加实…

vue网页实现

vue网页实现

Vue 网页实现基础步骤 安装 Vue.js 通过 npm 或 CDN 引入 Vue.js。npm 安装命令: npm install vue CDN 引入方式: <script s…

h5实现网页跳转

h5实现网页跳转

H5实现网页跳转的方法 在HTML5中,可以通过多种方式实现网页跳转。以下是几种常见的方法: 使用<a>标签 通过超链接标签实现跳转是最传统的方式: <a href="http…

h5实现网页截屏

h5实现网页截屏

实现网页截屏的方法 使用html2canvas库 html2canvas是一个流行的JavaScript库,可以将网页内容转换为Canvas图像。安装方式如下: npm install html2c…

css制作静态网页

css制作静态网页

使用CSS制作静态网页的基本方法 HTML结构搭建 静态网页的基础是HTML结构,需先创建清晰的DOM树。典型结构包括<!DOCTYPE html>声明、<head>(含<…

Vue实现网页全屏

Vue实现网页全屏

Vue实现网页全屏的方法 在Vue中实现网页全屏功能可以通过浏览器的全屏API来实现。以下是几种常见的实现方式: 使用原生JavaScript全屏API 浏览器提供了requestFullscree…