Làm cách nào để xác thực người dùng trong php?

Xác thực người dùng là một cơ chế bảo mật tiêu chuẩn, Nó cho phép người dùng được xác định truy cập vào bất kỳ ứng dụng hoặc trang web kỹ thuật số nào. Nó ngăn chặn nghiêm ngặt người dùng không xác định truy cập web hoặc ứng dụng di động

Chúng tôi sử dụng các sản phẩm kỹ thuật số như Facebook, Twitter, Gmail trong cuộc sống hàng ngày và chúng tôi gần như quen thuộc với cơ chế đăng ký và đăng nhập của người dùng. Bạn tạo một tài khoản trước khi đăng nhập vào các ứng dụng này theo cách này bạn có thể sử dụng các tính năng của chúng

Chúng ta sẽ học gì

Trong bài viết này, chúng tôi sẽ nêu bật một số tính năng cốt lõi cần có để xây dựng một hệ thống đăng nhập và đăng ký hoàn chỉnh với PHP & MySQL

  • Tạo biểu mẫu Đăng nhập và Đăng ký với Bootstrap 4
  • Tạo kết nối cơ sở dữ liệu MySQL với dự án PHP
  • Quản lý dữ liệu người dùng trong phiên
  • Xác thực phía máy chủ PHP
  • Xử lý thông báo lỗi
  • Gửi email xác minh người dùng bằng plugin SwiftMailer
  • Bảo mật mật khẩu bằng cơ chế băm mật khẩu
  • Xác minh mật khẩu
  • Chuyển hướng URL dựa trên trạng thái đăng nhập của người dùng
  • Hiển thị dữ liệu của người dùng đã đăng nhập bằng phiên PHP
  • Đăng xuất và hủy phiên

Mục lục

Điều kiện tiên quyết

Trước khi bạn bắt đầu tạo một hệ thống Đăng nhập & Đăng ký Người dùng PHP 8 an toàn, bạn phải thiết lập một máy chủ web cục bộ bằng MAMP hoặc XAMPP

Bạn cũng có thể làm theo hướng dẫn này để Thiết lập MySQL trên Mac và Định cấu hình MySQL trong Ứng dụng đầu cuối

Cấu trúc tệp và thư mục PHP 8

Mở MAMP hoặc XAMPP và khởi động máy chủ web của bạn, sau đó chuyển đến thư mục htdocs và tạo thư mục và tệp sau đây cần thiết để phát triển hệ thống xác thực người dùng của chúng tôi

\-- php-user-authentication
  |-- config
      |--- db.php
  |-- controllers
      |--- login.php
      |--- register.php
      |--- user_activation.php
  |-- css
      |--- style.css
  |-- lib
      |--- 3rd party plugins
  |-- dashboard.php
  |-- header.php
  |-- index.php
  |-- logout.php
  |-- signup.php
  |-- user_verification.php

Tạo cơ sở dữ liệu & bảng trong MySQL

Máy chủ web cục bộ của chúng tôi đang hoạt động, hãy truy cập PHPMyAdmin

Đầu tiên tạo cơ sở dữ liệu

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5

Tạo bảng

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6 trong cơ sở dữ liệu MySQL

Bạn có thể tạo các cột theo cách thủ công hoặc thậm chí bạn có thể thực thi tập lệnh sql bên dưới từ tab

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7 để tạo các cột có giá trị sau

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Làm cách nào để xác thực người dùng trong php?

Kết nối cơ sở dữ liệu

Thêm đoạn mã sau vào config/db. tập tin php

 
    // Enable us to use Headers
    ob_start();
    // Set sessions
    if(!isset($_SESSION)) {
        session_start();
    }
    $hostname = "localhost";
    $username = "phpdemo";
    $password = "4Mu99BhzK8dr4vF1";
    $dbname = "positronx_db";
    
    $connection = mysqli_connect($hostname, $username, $password, $dbname) or die("Database connection not established.")
?>

Phương thức ob_start() theo dõi bộ đệm đầu ra và cho phép chúng tôi sử dụng Header

$_SESSION cho phép chúng tôi lưu dữ liệu mà chúng tôi có thể sử dụng trong ứng dụng PHP của mình, phiên vẫn tồn tại miễn là cửa sổ trình duyệt được mở

Thiết kế giao diện người dùng đăng ký và đăng nhập người dùng với Bootstrap 4

Để thiết kế giao diện người dùng đăng ký và đăng nhập người dùng, chúng tôi đang sử dụng Bootstrap 4, hãy thêm liên kết Bootstrap CSS, JavaScript và jQuery vào phần đầu của bố cục HTML

Thêm đoạn mã sau vào phần đăng ký. php

doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="./css/style.css">
    <title>PHP User Registration System Exampletitle>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js">script>
head>
<body>
    <div class="App">
        <div class="vertical-center">
            <div class="inner-block">
                <form action="" method="post">
                    <h3>Registerh3>
                    <div class="form-group">
                        <label>First namelabel>
                        <input type="text" class="form-control" name="firstname" id="firstName" />
                    div>
                    <div class="form-group">
                        <label>Last namelabel>
                        <input type="text" class="form-control" name="lastname" id="lastName" />
                    div>
                    <div class="form-group">
                        <label>Emaillabel>
                        <input type="email" class="form-control" name="email" id="email" />
                    div>
                    <div class="form-group">
                        <label>Mobilelabel>
                        <input type="text" class="form-control" name="mobilenumber" id="mobilenumber" />
                    div>
                    <div class="form-group">
                        <label>Passwordlabel>
                        <input type="password" class="form-control" name="password" id="password" />
                    div>
                    <button type="submit" name="submit" id="submit" class="btn btn-outline-primary btn-lg btn-block">
                        Sign up
                    button>
                form>
            div>
        div>
    div>
body>
html>

Thêm đoạn mã sau vào chỉ mục. php để tạo bố cục biểu mẫu đăng nhập

doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/style.css">
    <title>PHP Login Systemtitle>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js">script>
head>
<body>
    
    <div class="App">
        <div class="vertical-center">
            <div class="inner-block">
                <form action="" method="post">
                    <h3>Loginh3>
                    <div class="form-group">
                        <label>Emaillabel>
                        <input type="email" class="form-control" name="email_signin" id="email_signin" />
                    div>
                    <div class="form-group">
                        <label>Passwordlabel>
                        <input type="password" class="form-control" name="password_signin" id="password_signin" />
                    div>
                    <button type="submit" name="login" id="sign_in"
                        class="btn btn-outline-primary btn-lg btn-block">Sign
                        inbutton>
                form>
            div>
        div>
    div>
body>
html>

Để thêm kiểu dáng trong ứng dụng xác thực người dùng PHP, hãy truy cập css/style. css và thêm đoạn mã sau

________số 8_______

Làm cách nào để xác thực người dùng trong php?

Xây dựng hệ thống đăng ký người dùng

Để tạo một hệ thống đăng ký người dùng an toàn, chúng ta cần vào bên trong bộ điều khiển/đăng ký. php và đặt đoạn mã sau vào bên trong nó


   
    // Database connection
    include('config/db.php');
    // Swiftmailer lib
    require_once './lib/vendor/autoload.php';
    
    // Error & success messages
    global $success_msg, $email_exist, $f_NameErr, $l_NameErr, $_emailErr, $_mobileErr, $_passwordErr;
    global $fNameEmptyErr, $lNameEmptyErr, $emailEmptyErr, $mobileEmptyErr, $passwordEmptyErr, $email_verify_err, $email_verify_success;
    
    // Set empty form vars for validation mapping
    $_first_name = $_last_name = $_email = $_mobile_number = $_password = "";
    if(isset($_POST["submit"])) {
        $firstname     = $_POST["firstname"];
        $lastname      = $_POST["lastname"];
        $email         = $_POST["email"];
        $mobilenumber  = $_POST["mobilenumber"];
        $password      = $_POST["password"];
        // check if email already exist
        $email_check_query = mysqli_query($connection, "SELECT * FROM users WHERE email = '{$email}' ");
        $rowCount = mysqli_num_rows($email_check_query);

        // PHP validation
        // Verify if form values are not empty
        if(!empty($firstname) && !empty($lastname) && !empty($email) && !empty($mobilenumber) && !empty($password)){
            
            // check if user email already exist
            if($rowCount > 0) {
                $email_exist = '
                    
                ';
            } else {
                // clean the form data before sending to database
                $_first_name = mysqli_real_escape_string($connection, $firstname);
                $_last_name = mysqli_real_escape_string($connection, $lastname);
                $_email = mysqli_real_escape_string($connection, $email);
                $_mobile_number = mysqli_real_escape_string($connection, $mobilenumber);
                $_password = mysqli_real_escape_string($connection, $password);
                // perform validation
                if(!preg_match("/^[a-zA-Z ]*$/", $_first_name)) {
                    $f_NameErr = '
Only letters and white space allowed.
'
; } if(!preg_match("/^[a-zA-Z ]*$/", $_last_name)) { $l_NameErr = '
Only letters and white space allowed.
'
; } if(!filter_var($_email, FILTER_VALIDATE_EMAIL)) { $_emailErr = '
Email format is invalid.
'
; } if(!preg_match("/^[0-9]{10}+$/", $_mobile_number)) { $_mobileErr = '
Only 10-digit mobile numbers allowed.
'
; } if(!preg_match("/^(?=.*\d)(?=.*[@#\-_$%^&+=§!\?])(?=.*[a-z])(?=.*[A-Z])[0-9A-Za-z@#\-_$%^&+=§!\?]{6,20}$/", $_password)) { $_passwordErr = '
Password should be between 6 to 20 charcters long, contains atleast one special chacter, lowercase, uppercase and a digit.
'
; } // Store the data in db, if all the preg_match condition met if((preg_match("/^[a-zA-Z ]*$/", $_first_name)) && (preg_match("/^[a-zA-Z ]*$/", $_last_name)) && (filter_var($_email, FILTER_VALIDATE_EMAIL)) && (preg_match("/^[0-9]{10}+$/", $_mobile_number)) && (preg_match("/^(?=.*\d)(?=.*[@#\-_$%^&+=§!\?])(?=.*[a-z])(?=.*[A-Z])[0-9A-Za-z@#\-_$%^&+=§!\?]{8,20}$/", $_password))){ // Generate random activation token $token = md5(rand().time()); // Password hash $password_hash = password_hash($password, PASSWORD_BCRYPT); // Query $sql = "INSERT INTO users (firstname, lastname, email, mobilenumber, password, token, is_active, date_time) VALUES ('{$firstname}', '{$lastname}', '{$email}', '{$mobilenumber}', '{$password_hash}', '{$token}', '0', now())"; // Create mysql query $sqlQuery = mysqli_query($connection, $sql); if(!$sqlQuery){ die("MySQL query failed!" . mysqli_error($connection)); } // Send verification email if($sqlQuery) { $msg = 'Click on the activation link to verify your email.

Click here to verify email '
; // Create the Transport $transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl')) ->setUsername('[email protected]') ->setPassword('your_email_password'); // Create the Mailer using your created Transport $mailer = new Swift_Mailer($transport); // Create a message $message = (new Swift_Message('Please Verify Email Address!')) ->setFrom([$email => $firstname . ' ' . $lastname]) ->setTo($email) ->addPart($msg, "text/html") ->setBody('Hello! User'); // Send the message $result = $mailer->send($message); if(!$result){ $email_verify_err = '
Verification email coud not be sent!
'
; } else { $email_verify_success = '
Verification email has been sent!
'
; } } } } } else { if(empty($firstname)){ $fNameEmptyErr = '
First name can not be blank.
'
; } if(empty($lastname)){ $lNameEmptyErr = '
Last name can not be blank.
'
; } if(empty($email)){ $emailEmptyErr = '
Email can not be blank.
'
; } if(empty($mobilenumber)){ $mobileEmptyErr = '
Mobile number can not be blank.
'
; } if(empty($password)){ $passwordEmptyErr = '
Password can not be blank.
'
; } } } ?>

Bao gồm cơ sở dữ liệu để xử lý dữ liệu người dùng. Phương thức isset() đang kiểm tra dữ liệu biểu mẫu khi người dùng nhấp vào nút gửi thuộc tính cùng tên mà chúng tôi đã chuyển trong biểu mẫu đăng ký

Trích xuất dữ liệu người dùng như tên, họ, email, số điện thoại di động và mật khẩu bằng phương thức HTTP $_POST[”]

Xác thực nếu email do người dùng cung cấp đã tồn tại trong cơ sở dữ liệu bằng tập lệnh SQL thông qua phương thức mysqli_query()

Kiểm tra xem các giá trị biểu mẫu không trống

Xác minh xem email người dùng đã tồn tại chưa, sau đó hiển thị lỗi bằng thành phần thông báo cảnh báo Bootstrap. Chúng tôi biến thông báo lỗi thành biến toàn cục để có thể hiển thị cho người dùng

Phương thức mysqli_real_escape_string() làm sạch dữ liệu trước khi gửi đến cơ sở dữ liệu

Phương thức preg_match() thực hiện xác thực PHP cho tên, tên di động và mật khẩu. Để xác thực giá trị email, chúng tôi đã sử dụng phương thức filter_var(). Chúng tôi đã khắc phục lỗi và đặt nó thành toàn cầu

Chúng tôi cần tạo mã thông báo ngẫu nhiên bằng cách sử dụng md5(rand(). time()) để gửi email xác minh đến id email người dùng

Để băm mật khẩu một cách an toàn, chúng tôi đã sử dụng phương thức password_hash(). password_hash() tạo hàm băm mật khẩu mới bằng thuật toán băm một chiều an toàn

Chúng ta cần cài đặt SwiftMailer php plugin để gửi mail xác minh cho người dùng, tôi đã sử dụng lệnh composer sau để cài đặt thư viện SwiftMailer. Đảm bảo bạn đã cài đặt trình soạn nhạc trên máy phát triển của mình

composer require "swiftmailer/swiftmailer:^6.0"

Chúng tôi cần nhập thư viện SwiftMailer và thêm tập lệnh SwiftMailer cũng xác định mẫu email sẽ được gửi cho người dùng

Bây giờ, chúng ta cần triển khai logic xác thực người dùng bên trong đăng ký. tập tin php

 include('./controllers/register.php'); ?>
doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="./css/style.css">
    <title>PHP User Registration System Exampletitle>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js">script>
head>
<body>
   
    include('./header.php'); ?>
    <div class="App">
        <div class="vertical-center">
            <div class="inner-block">
                <form action="" method="post">
                    <h3>Registerh3>
                     echo $success_msg; ?>
                     echo $email_exist; ?>
                     echo $email_verify_err; ?>
                     echo $email_verify_success; ?>
                    <div class="form-group">
                        <label>First namelabel>
                        <input type="text" class="form-control" name="firstname" id="firstName" />
                         echo $fNameEmptyErr; ?>
                         echo $f_NameErr; ?>
                    div>
                    <div class="form-group">
                        <label>Last namelabel>
                        <input type="text" class="form-control" name="lastname" id="lastName" />
                         echo $l_NameErr; ?>
                         echo $lNameEmptyErr; ?>
                    div>
                    <div class="form-group">
                        <label>Emaillabel>
                        <input type="email" class="form-control" name="email" id="email" />
                         echo $_emailErr; ?>
                         echo $emailEmptyErr; ?>
                    div>
                    <div class="form-group">
                        <label>Mobilelabel>
                        <input type="text" class="form-control" name="mobilenumber" id="mobilenumber" />
                         echo $_mobileErr; ?>
                         echo $mobileEmptyErr; ?>
                    div>
                    <div class="form-group">
                        <label>Passwordlabel>
                        <input type="password" class="form-control" name="password" id="password" />
                         echo $_passwordErr; ?>
                         echo $passwordEmptyErr; ?>
                    div>
                    <button type="submit" name="submit" id="submit" class="btn btn-outline-primary btn-lg btn-block">Sign up
                    button>
                form>
            div>
        div>
    div>
body>
html>

Tập lệnh xác minh email người dùng trong PHP 8

Chúng tôi đã xác định cấu hình SwiftMailer trong sổ đăng ký. php, bây giờ hãy triển khai tập lệnh xác minh người dùng để gửi email xác minh

Thêm đoạn mã sau vào bộ điều khiển/user_activation. tập tin php


    // Database connection
    include('./config/db.php');
    global $email_verified, $email_already_verified, $activation_error;
    // GET the token = ?token
    if(!empty($_GET['token'])){
       $token = $_GET['token'];
    } else {
        $token = "";
    }
    if($token != "") {
        $sqlQuery = mysqli_query($connection, "SELECT * FROM users WHERE token = '$token' ");
        $countRow = mysqli_num_rows($sqlQuery);
        if($countRow == 1){
            while($rowData = mysqli_fetch_array($sqlQuery)){
                $is_active = $rowData['is_active'];
                  if($is_active == 0) {
                     $update = mysqli_query($connection, "UPDATE users SET is_active = '1' WHERE token = '$token' ");
                       if($update){
                           $email_verified = '
User email successfully verified!
'
; } } else { $email_already_verified = '
User email already verified!
'
; } } } else { $activation_error = '
Activation error!
'
; } } ?>

Thêm đoạn mã sau vào user_verification. tập tin php

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
0

Làm cách nào để xác thực người dùng trong php?

Xây dựng hệ thống đăng nhập PHP 8 với MySQL

Đoạn mã sau chỉ cho phép truy cập vào những người dùng đã xác minh địa chỉ email của họ. Người dùng chưa được xác minh không thể truy cập trong ứng dụng và Chúng tôi cũng đang lưu trữ dữ liệu của người dùng đã đăng nhập vào Phiên PHP và với sự trợ giúp của tiêu đề ("Vị trí. trang_url. php”) chuyển hướng người dùng đã đăng nhập đến bảng điều khiển. trang php

Để tạo hệ thống Đăng nhập PHP MySQL, Thêm đoạn mã sau vào bộ điều khiển/đăng nhập. tập tin php

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1

Để triển khai logic đăng nhập trong trang đăng nhập, hãy thêm đoạn mã sau vào bộ điều khiển/chỉ mục. tập tin php

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2

Hiển thị tập lệnh đăng xuất và dữ liệu của người dùng đã đăng nhập

Thêm đoạn mã sau vào bảng điều khiển. php để chỉ hiển thị dữ liệu người dùng cho người dùng đã đăng nhập

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3

Bây giờ, chúng ta cần hủy phiên để Đăng xuất người dùng khỏi hệ thống xác thực người dùng. Chúng tôi đã vượt qua đăng xuất. liên kết php đến nút đăng xuất trong tệp bảng điều khiển

mở đăng xuất. php và đặt đoạn mã sau vào đó

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `firstname` varchar(100) NOT NULL,
  `lastname` varchar(100) NOT NULL,
  `email` varchar(50) NOT NULL,
  `mobilenumber` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `token` varchar(255) NOT NULL,
  `is_active` enum('0','1') NOT NULL,
  `date_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4

Phần kết luận

Vì vậy, đây là Ứng dụng đăng nhập và xác thực người dùng PHP 8. Tôi hy vọng bạn đã có ý tưởng cơ bản về cách chúng ta có thể tạo một hệ thống đăng nhập và xác thực với PHP và MySQL. Chúng tôi đã đề cập đến một số chủ đề thiết yếu như gửi email xác minh cho người dùng, băm mật khẩu một cách an toàn

Mã hoàn chỉnh của hướng dẫn này có thể được tìm thấy trên GitHub

Làm cách nào để xác thực người dùng trong php?

máy đào

Tôi là Digamber, một nhà phát triển full-stack và là người đam mê thể dục. Tôi đã tạo trang web này để truyền kinh nghiệm mã hóa của mình cho các lập trình viên mới. Tôi thích viết trên JavaScript, ECMAScript, React, Angular, Vue, Laravel

Twitter GitHub

Bài viết đề xuất

Xây dựng hệ thống xếp hạng 5 sao PHP MySQL bằng cách sử dụng jQuery AJAXPHP 8 Tìm kiếm dữ liệu trực tiếp AJAX với MySQL Hướng dẫn PHP 8 Select2 Đa lựa chọn với jQuery AJAX Hướng dẫn PHP 8 Ví dụ mã hóa và giải mã dữ liệu JSON Ví dụ hướng dẫn xác thực biểu mẫu phía máy chủ PHP 8Tích hợp Google reCAPTCHA trong biểu mẫu liên hệ PHP 8Cách tạo Captcha . Lấy giá trị đã chọn và thêm kiểu Cách lấy các giá trị đã chọn từ tùy chọn được chọn trong PHP 8Nhận nhiều giá trị của các hộp kiểm đã chọn trong PHP 8 Tạo phân trang trong PHP 8 với MySQL và Bootstrap

Làm cách nào để xác thực bằng php và MySQL?

Có một vài bước được đưa ra bên dưới để thiết lập môi trường. .
Mở Bảng điều khiển XAMPP
Khởi động máy chủ Apache bằng cách nhấp vào nút Bắt đầu
Khởi động MySQL bằng cách nhấp vào nút Bắt đầu
Tạo tất cả các tệp cần thiết để đăng nhập
Tạo bảng đăng nhập vào cơ sở dữ liệu bằng phpMyAdmin trong XAMPP

Làm cách nào chúng tôi có thể xác thực người dùng trong cơ sở dữ liệu?

Mật khẩu là một trong những hình thức xác thực cơ bản. Người dùng phải cung cấp mật khẩu chính xác khi thiết lập kết nối để ngăn chặn việc sử dụng trái phép cơ sở dữ liệu. Bằng cách này, người dùng cố gắng kết nối với cơ sở dữ liệu có thể được xác thực bằng cách sử dụng thông tin được lưu trữ trong cơ sở dữ liệu đó .

Làm cách nào để xác thực tên người dùng và mật khẩu trong php từ cơ sở dữ liệu?

php');

Làm cách nào để tạo ủy quyền trong php?

Cách xây dựng xác thực an toàn bằng PHP .
các giao diện
Giao diện người dùng
UserTokenGiao Diện
Giao diện quản lý người dùng
Bây giờ hãy tạo các lớp sẽ thực hiện các giao diện trên
PasswordTrait để quản lý mật khẩu
UserManager để quản lý người dùng
UserToken để nhận Người dùng hiện tại