Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melakukan pengesahan pengguna menggunakan PHP?

Bagaimana untuk melakukan pengesahan pengguna menggunakan PHP?

PHPz
PHPzasal
2024-04-19 18:42:02834semak imbas

Pengesahan pengguna adalah penting dalam PHP dan boleh dicapai dalam pelbagai cara, termasuk bergantung pada sesi, menggunakan pangkalan data atau memanfaatkan perpustakaan pihak ketiga. Dengan kaedah sesi, anda boleh mengesahkan bahawa pengguna telah log masuk dengan menyemak sama ada pembolehubah $_SESSION wujud. Apabila menggunakan pangkalan data, anda boleh membandingkan kelayakan yang diserahkan dengan yang diperoleh daripada pangkalan data. Selain itu, perpustakaan pihak ketiga seperti Laravel, Zend Framework atau Slim Framework boleh digunakan untuk memudahkan proses pengesahan.

如何使用 PHP 进行用户验证?

Cara menggunakan PHP untuk pengesahan pengguna

Pengesahan pengguna adalah penting dalam aplikasi web untuk memastikan hanya pengguna yang diberi kuasa boleh mengakses data sensitif atau melakukan operasi tertentu. Terdapat beberapa cara untuk melaksanakan pengesahan pengguna dalam PHP, termasuk:

Bergantung pada Sesi

Kaedah ini menggunakan $_SESSION pembolehubah untuk menyimpan maklumat yang disulitkan tentang pengguna yang dilog masuk.

// 检查用户是否已登录
if (isset($_SESSION['user_id']) && isset($_SESSION['user_name'])) {
    // 用户已登录
} else {
    // 用户未登录,重定向到登录页面
    header('Location: login.php');
    exit;
}

Menggunakan Pangkalan Data

Kaedah ini menyimpan maklumat pengguna dalam pangkalan data dan menggunakan bukti kelayakan pangkalan data untuk pengesahan apabila pengguna log masuk.

// 从表单中获取已提交的凭证
$username = $_POST['username'];
$password = $_POST['password'];

// 使用 PDO 连接到数据库
$conn = new PDO("mysql:host=localhost;dbname=my_database", "user", "password");

// 准备并执行查询以获取用户信息
$stmt = $conn->prepare("SELECT user_id, password FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();

// 获取查询结果
$result = $stmt->fetch(PDO::FETCH_ASSOC);

// 比较提交的凭证和数据库中的凭证
if ($result && password_verify($password, $result['password'])) {
    // 设置会话变量并重定向到受保护的页面
    $_SESSION['user_id'] = $result['user_id'];
    header('Location: protected_page.php');
    exit;
} else {
    // 显示错误页面
    header('Location: error.php');
    exit;
}

Gunakan perpustakaan pihak ketiga

Terdapat juga beberapa perpustakaan pihak ketiga yang boleh memudahkan proses pengesahan pengguna dalam PHP, seperti:

  • [Laravel](https://laravel.com/docs/ 9.x/authentication )
  • [Zend Framework](https://docs.zendframework.com/zf3/authentication/)
  • [Slim Framework](https://www.slimframework.com/docs/v4/middleware /#authentication)

Kes praktikal

Mari kita buat sistem pengesahan pengguna PHP yang mudah menggunakan kaedah sesi:

<?php
// 开始会话
session_start();

// 如果提交了登录表单
if (isset($_POST['submit'])) {
    // 获取已提交的凭证
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 检查凭证(假设从数据库中获取)
    if ($username == 'admin' && $password == '12345') {
        // 设置会话变量以指示用户已登录
        $_SESSION['logged_in'] = true;

        // 重定向到受保护的页面
        header('Location: protected_page.php');
        exit;
    } else {
        // 显示错误消息
        echo '<p>Invalid credentials</p>';
    }
}

// 如果用户已登录,则显示受保护的页面
if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) {
    echo '<h1>Welcome, admin!</h1>';
} else {
    // 显示登录表单
    echo '<form action="login.php" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username">
        <label for="password">Password:</label>
        <input type="password" id="password" name="password">
        <input type="submit" name="submit" value="Login">
    </form>';
}
?>

Atas ialah kandungan terperinci Bagaimana untuk melakukan pengesahan pengguna menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn