当前位置:首页 > PHP

php如何实现登录验证

2026-02-28 01:29:49PHP

PHP 登录验证实现方法

数据库连接与用户表设计

创建一个用户表存储用户名和密码(建议使用哈希加密)

// 数据库连接示例
$host = 'localhost';
$db   = 'database_name';
$user = 'username';
$pass = 'password';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

密码哈希处理

注册时使用password_hash()函数加密密码

php如何实现登录验证

$password = $_POST['password'];
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 存储$hashed_password到数据库

登录验证流程

session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $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'];
        $_SESSION['username'] = $user['username'];
        header('Location: dashboard.php');
        exit;
    } else {
        $error = '用户名或密码错误';
    }
}

会话管理与安全防护

每次敏感操作前验证会话

php如何实现登录验证

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

防范SQL注入使用预处理语句 防范XSS攻击对输出进行htmlspecialchars处理

echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

记住登录功能实现

使用安全令牌实现持久登录

if (isset($_POST['remember_me'])) {
    $token = bin2hex(random_bytes(32));
    $expiry = time() + 60 * 60 * 24 * 30; // 30天

    // 存储token到数据库
    $stmt = $pdo->prepare('UPDATE users SET remember_token = ?, token_expiry = ? WHERE id = ?');
    $stmt->execute([$token, date('Y-m-d H:i:s', $expiry), $_SESSION['user_id']]);

    setcookie('remember', $token, $expiry, '/', '', true, true);
}

标签: 如何实现php
分享给朋友:

相关文章

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

vue如何实现滤镜

vue如何实现滤镜

Vue 实现滤镜的方法 在 Vue 中实现滤镜效果可以通过多种方式,以下是常见的几种方法: 使用 CSS filter 属性 通过 CSS 的 filter 属性可以直接为元素添加滤镜效果。在 Vu…

如何实现语音react

如何实现语音react

语音识别基础设置 在React中实现语音识别功能通常需要借助浏览器的Web Speech API或第三方库。Web Speech API提供了SpeechRecognition接口,允许应用程序直接访…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…