✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak stworzyć system logowania PHP dla swojej witryny?

983

Czy chcesz zintegrować system logowania w PHP? W tym artykule pokażę, jak wykonać podstawowy proces logowania do PHP. Stworzymy formularz logowania, zweryfikujemy poświadczenia i przekierujemy użytkownika na stronę konta. Dodałbym również kod do wylogowania użytkownika. Dodatkowo wyświetlimy komunikaty o błędach, jeśli zostaną wprowadzone nieprawidłowe dane uwierzytelniające.

Na potrzeby samouczka zakładam, że do przechowywania hasła używasz skrótu „md5". Napisałbym kod, biorąc pod uwagę skrót md5 ciągu. Być może używasz innego algorytmu. W takim przypadku musisz zmienić zapytanie zgodnie z algorytmem.

Aby zintegrować przepływ logowania, potrzebujemy tabeli bazy danych, która przechowuje dane użytkownika. Na podstawie tej tabeli sprawdzamy, czy użytkownik wprowadził prawidłowe dane uwierzytelniające, czy nie. Jeśli poświadczenia użytkownika są poprawne, tylko oni powinni mieć dostęp do zabezpieczonych stron.

W moim przypadku stworzyłem tabelę „users” i dodałem kilka fikcyjnych wpisów. Dodałem również kolumnę „status”, która posłuży do sprawdzenia, czy konto jest aktywne, czy nie. Ta kolumna ma typ danych ENUM z wartościami 0 i 1.

  • 1: Konto jest aktywne
  • 0: Konto nie jest aktywne

Jak stworzyć system logowania PHP dla swojej witryny?

Utwórz formularz logowania

Na początek utwórzmy formularz logowania, w którym użytkownicy mogą wprowadzać swoje poświadczenia. Aby zbudować formularz logowania używam frameworka Bootstrap. Mój index.phpplik zawiera poniższy kod.

<!DOCTYPE html>
<html>
    <head>
        <title>Login Form</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-6">
                    <h3>Login Form</h3>
                    <?php if(!empty($error_message)) { ?>
                        <div class="alert alert-danger"><?php echo $error_message; ?></div>
                    <?php } ?>
                    <form method="post">
                        <div class="form-group">
                            <label for="exampleInputEmail1">Email address</label>
                            <input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email" required />
                        </div>
                        <div class="form-group">
                            <label for="exampleInputPassword1">Password</label>
                            <input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="Password" required />
                        </div>
                        <button type="submit" name="submit" class="btn btn-primary">Submit</button>
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>

Powyższy kod wyświetli formularz logowania, jak pokazano na poniższym zrzucie ekranu.

Jak stworzyć system logowania PHP dla swojej witryny?

Dodałem zmienną $error_messagew kodzie, która wyświetli błędy logowania.

Kod PHP do weryfikacji poświadczeń użytkowników

Jesteś gotowy z formularzem logowania i tabelą bazy danych. Następnie, przesyłając formularz, musimy napisać kod PHP, który porównuje dane uwierzytelniające użytkownika z rekordami bazy danych. Jeśli dane są poprawne, zaloguj się do systemu i przekieruj na myaccount.phpstronę.

Utwórz config.phpplik i dodaj kod połączenia z bazą danych.

<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
 
if ($conn->connect_errno) {
    echo "Error: ". $conn->connect_error;
}
?>

Zastąp symbole zastępcze rzeczywistymi wartościami.

Teraz w index.phppliku przed rozpoczęciem tagu html dodaj poniższy kod.

<?php
session_start();
  
require_once('config.php');
  
//if user is logged in redirect to myaccount page
if (isset($_SESSION['id'])) {
    header('Location: myaccount.php');
}
  
$error_message = '';
if (isset($_POST['submit'])) {
 
    extract($_POST);
 
    if (!empty($email) && !empty($password)) {
        $sql = "SELECT id, status FROM users WHERE email = '".$conn->real_escape_string($email)."' AND password = '".md5($conn->real_escape_string($password))."'";
        $result = $conn->query($sql);
  
        if ($result->num_rows > 0) {
            $row = $result->fetch_assoc();
            if($row['status']) {
                $_SESSION['id'] = $row['id'];
                header('Location: myaccount.php');
            } else {
                $error_message = 'Your account is not active yet.';
            }
        } else {
            $error_message = 'Incorrect email or password.';
        }
    } else {
        $error_message = 'Please enter email and password.';
    }
}
?>

Tutaj w kodzie, sprawdzając hasło, użyłem metody PHP md5 zakładając, że zapisałeś hasło za pomocą tego algorytmu.

Kod wylogowania

Kolejna część to dodanie kodu do wylogowania użytkownika. W tym celu utwórz myaccount.phpplik. Jeszcze jedna rzecz potrzebna do obsługi, która tylko zalogowani użytkownicy powinni uzyskać dostęp do tej strony.

mojekonto.php

<?php
session_start();
 
if (isset($_GET['action']) && ('logout' == $_GET['action'])) {
    unset($_SESSION['id']);
}
 
if (isset($_SESSION['id'])) {
    ?>
    <h3>Welcome User! <a href="?action=logout">Logout</a></h3>
    <?php
} else { //redirect to login page
    header('Location: index.php');
}
?>

Korzystając z sesji PHP zastanawiamy się, czy dać dostęp do tej strony, czy nie. Jeśli sesja nie jest ustawiona, przekieruj użytkownika na stronę logowania.

Mam nadzieję, że rozumiesz podstawy budowania systemu logowania w PHP. Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów