当前位置:首页 > PHP

php登陆功能实现

2026-02-27 13:14:57PHP

用户认证基础实现

使用PHP内置的password_hash()password_verify()函数进行安全密码处理。注册时对密码进行哈希存储:

$hashed_password = password_hash($plain_password, PASSWORD_DEFAULT);

登录时验证密码:

if (password_verify($input_password, $stored_hash)) {
    // 认证成功
}

会话管理机制

通过session_start()初始化会话,认证成功后设置会话变量:

$_SESSION['user_id'] = $user_id;
$_SESSION['logged_in'] = true;

每个受保护页面开头检查会话状态:

session_start();
if (!isset($_SESSION['logged_in'])) {
    header('Location: login.php');
    exit;
}

数据库交互示例

假设有users表包含id, username, password字段:

php登陆功能实现

// 查询用户
$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'];
}

安全增强措施

实现CSRF保护生成令牌:

$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

表单中包含隐藏字段:

<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">

验证时比对:

php登陆功能实现

if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die('CSRF验证失败');
}

完整登录流程示例

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'];
        $_SESSION['logged_in'] = true;
        header('Location: dashboard.php');
        exit;
    } else {
        $error = "无效的凭据";
    }
}

密码重置功能

实现密码重置请求:

// 生成重置令牌
$token = bin2hex(random_bytes(50));
$expires = date('Y-m-d H:i:s', strtotime('+1 hour'));

$stmt = $pdo->prepare("UPDATE users SET reset_token=?, reset_expires=? WHERE email=?");
$stmt->execute([$token, $expires, $email]);

发送包含令牌链接的邮件,验证时检查有效期:

$stmt = $pdo->prepare("SELECT * FROM users WHERE reset_token=? AND reset_expires > NOW()");
$stmt->execute([$token]);

标签: 功能php
分享给朋友:

相关文章

vue实现轨道功能

vue实现轨道功能

实现轨道功能的基本思路 轨道功能通常指在界面中创建可滑动的轨道,用户可以通过拖动或点击轨道上的元素进行交互。Vue.js结合其响应式特性和组件化开发方式,可以高效实现这一功能。 核心实现步骤 创建…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php实现分页功能

php实现分页功能

PHP实现分页功能的方法 数据库查询与分页逻辑 使用SQL的LIMIT和OFFSET实现分页。假设每页显示10条数据,当前页码为$page: $perPage = 10; $page = isse…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 &l…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。…