Magazine Gadgets

Ajouter une authentification à n’importe quelle application PHP à l’aide de MySQL

Publié le 09 septembre 2021 par Mycamer

PHP est un langage de script côté serveur open source qui peut être intégré au HTML pour créer des applications Web. Il est utilisé pour développer des applications Web dynamiques et connecter l’application à une base de données.

Dans ce guide, vous apprendrez à créer un système d’authentification à l’aide de bases de données PHP et MySQL. Nous attendons de vous que vous connaissiez les bases de PHP et MySQL avant de vous lancer.

Construire la mise en page à l’aide de HTML et Bulma CSS

Le front-end de ce projet est construit en utilisant HTML et CSS Bulma. Bulma CSS est l’un des frameworks CSS les plus utilisés pour la conception de pages Web. Vous pouvez utiliser Bulma CSS en important le CSS minifié du CDN dans votre fichier PHP.

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/bulma.min.css">

Intégration de la base de données MySQL

MySQL est un relationnel Système de gestion de base de données SQL utilisé pour effectuer des opérations CRUD sur les données. Cette application Web utilisera phpMyAdmin pour la gestion de la base de données.

phpMyAdmin est un outil logiciel libre écrit en PHP, destiné à gérer l’administration de MySQL sur le Web.

Vous pouvez installer le phpMyAdmin par mise en place d’un serveur WAMP sur votre machine Windows (ou XAMPP sous Linux) et visitez l’URL suivante

http://localhost/phpmyadmin

L’écran ressemblera à ceci :

Page d'administration de phpMyAdmin

Création de la base de données

Vous pouvez créer la base de données soit en utilisant des requêtes SQL, soit via l’interface graphique fournie par phpMyAdmin. Dans cette application, le nom de la base de données est auth et le nom de la table est également users. Les attributs de la table sont id, username, email et password.

Voici comment créer la base de données et la table à l’aide de commandes SQL :

Apprendre encore plus: Commandes SQL les plus importantes que tout programmeur devrait connaître

CREATE DATABASE auth;
CREATE TABLE users(
id int,
username varchar(255),
email varchar(255),
password varchar(500),
);

Connexion de l’application à la base de données

Créer un fichier nommé db.php dans votre dossier de projet, où vous connecterez votre base de données et importerez ce fichier dans d’autres fichiers PHP pour l’utiliser.

La connexion est établie à l’aide du mysqli_connect() méthode. Cette méthode accepte quatre arguments : le nom du serveur, l’utilisateur, le mot de passe et le nom de la base de données.

Vous pouvez utiliser le $connexion variable lors de l’exécution des requêtes en important le fichier db.php dans d’autres fichiers PHP.

<?php
$connection = mysqli_connect("localhost", "root", "", "auth") ;
?>

Inscrivez-vous en utilisant PHP

La première phase de la construction d’un système d’authentification implique l’enregistrement ou l’inscription. La mise en page frontale de la page d’inscription a un formulaire avec un action qui fait une requête POST sur la page. Il comporte quatre champs de saisie : nom d’utilisateur, e-mail, mot de passe et confirmation du mot de passe.

 <form class="card m-3 p-6 m-5 container mx-auto" action="./register.php" method="POST">

<h1 class="title is-1 has-text-center">Register Here</h1>
<input class="input is-primary mt-4" type="text" name="username" placeholder="Username">
<?php if ($usernameErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$usernameErrorMsg</p>" ?>

<input class="input is-primary mt-4" type="email" name="email" placeholder="Email">
<?php if ($emailErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$emailErrorMsg</p>" ?>

<input class="input is-primary mt-4" type="password" name="password" placeholder="Password">
<?php if ($passwordErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$passwordErrorMsg</p>" ?>

<input class="input is-primary mt-4" type="password" name="confirm-password" placeholder="Confirm Password">
<?php if ($confirmPasswordErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$confirmPasswordErrorMsg</p>" ?>

<button type="submit" name="submit" class="button is-primary mt-4">Register</button>
<p class="mt-2 text-center">Already have an account ? <a href="./login.php">Login</a></p>
</form>

Enregistrer la mise en page

Les isset() méthode vérifie si le bouton est cliqué ou non, car il peut accéder au S’inscrire bouton à l’aide du $_POST[] super global.

Avant tout cela, vous devez importer le db.php fichier dans le s’inscrire.php déposer. Il y a quelques variables déclarées pour la validation d’entrée. Découvrez le code ci-dessous.

include "./db.php";
$error = "";
$emailErrorMsg = "";
$usernameErrorMsg = "";
$passwordErrorMsg = "";
$confirmPasswordErrorMsg = "";

Validation d’entrée sur la page d’inscription

Avant de procéder à la validation d’entrée, vous devez accéder aux valeurs des éléments d’entrée en utilisant $_POST[].

Les mysqli_real_escape_string() La méthode permet de supprimer les caractères spéciaux de la chaîne car ils peuvent provoquer des actions malveillantes lors de l’exécution d’opérations de requête.

En rapport: Comment implémenter la validation de formulaire côté client avec JavaScript

$username = mysqli_real_escape_string($connection, $_POST["username"]);
$email = mysqli_real_escape_string($connection, $_POST["email"]);
$password = mysqli_real_escape_string($connection, $_POST["password"]);
$confirmPassword = mysqli_real_escape_string($connection, $_POST["confirm-password"]);
if($username == ""){
$usernameErrorMsg = "Please enter your username";
}
if($email == ""){
$emailErrorMsg = "Please enter the email";
}else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$emailErrorMsg = "Please enter a valid email";
}
if($password == ""){
$passwordErrorMsg = "Enter your password";
}
if($confirmPassword == ""){
$confirmPasswordErrorMsg = "Enter confirm password";
}
if(strlen($password) < 6){
$passwordErrorMsg = "Enter a password greater than 6 characters";
}else if($password!=$confirmPassword){
$confirmPasswordErrorMsg = "Password and Confirm Password field should be same";
}

Page d'inscription avec des erreurs de validation

Tout d’abord, vous vérifiez si les champs sont vides ou non. Pour le champ de saisie de l’e-mail, vous devez vérifier si l’utilisateur a saisi un e-mail valide ou n’a pas utilisé le filtre_var() méthode. La longueur du champ de mot de passe doit être supérieure à 6. Ce sont les validations de base dont vous devez vous occuper lors de la création d’une application.

S’il n’y a pas d’erreurs, vous pouvez continuer à exécuter des commandes de requête sur le s’inscrire.php déposer.

if($error == "" & $emailErrorMsg == "" & $passwordErrorMsg == "" & $confirmPasswordErrorMsg == ""){
$query = "SELECT * FROM auth WHERE email = '$email'";
$findUser = mysqli_query($connection, $query);
$resultantUser = mysqli_fetch_assoc($findUser);

if($resultantUser){
$error = "User already exists";
}
$password = md5($password);
$query = "INSERT INTO auth (username, email, password) VALUES('$username', '$email', '$password')";
$insertUser = mysqli_query($connection, $query);

$_SESSION['username'] = $username;
$_SESSION['email'] = $email;
header("location: home.php");
}

Vous devez exécuter une requête qui vérifie si l’e-mail existe déjà dans la base de données ou non. Les mysqli_query() méthode est utilisée pour effectuer toutes les opérations de requête. Vous devez passer le résultat de la requête dans le mysqli_query_assoc() méthode. Cette méthode convertit le résultat en un tableau associatif de chaînes.

Si l’utilisateur existe déjà, vous devez afficher une erreur avec le message : L’utilisateur existe déjà. Sinon, vous devez insérer les champs dans la base de données. Comme ce n’est pas une bonne pratique de stocker les chaînes de mot de passe en clair, le md5() La méthode convertira le mot de passe en un hachage, puis l’enregistrera.

Une fois l’utilisateur enregistré dans la base de données, vous devez charger le nom d’utilisateur ou l’e-mail dans le $_SESSION[] superglobal et rediriger l’utilisateur vers la page d’accueil.

Un regard sur l’écran d’accueil

L’utilisateur ne peut accéder à la page d’accueil que s’il est connecté. Sur la page d’accueil, vous devez vérifier si le SESSION existe ou non. Si il n’y a pas SESSION défini, vous devez rediriger l’utilisateur vers la page de connexion.

Mise en page de la page d'accueil

Se connecter avec PHP

Dans cette application, l’utilisateur se connectera à l’aide d’un e-mail et d’un mot de passe. La mise en page HTML pour login.php:

<form class="card m-3 p-6 m-5 container  mx-auto" action="./login.php" method="POST">
<h1 class="title is-1 has-text-center has-text-black">Login Here</h1>
<?php if ($error != "") echo " <div class='button is-danger is-light'>$error</div>" ?>
<input class="input is-primary mt-4" name="email" type="email" placeholder="Email">
<?php if ($emailErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$emailErrorMsg</p>" ?>

<input class="input is-primary mt-4" name="password" type="password" placeholder="Password">
<?php if ($passwordErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$passwordErrorMsg</p>" ?>
<button class="button is-primary mt-4" type="submit" name="submit">Login</button>
<p>Don't have an account? <a href="./register.php">Register here</a></p>
</form>

Mise en page de la page de connexion

Authentification de l’utilisateur

Vous devez valider les entrées de la même manière que lors de l’enregistrement de l’utilisateur.

$email = mysqli_real_escape_string($connection, $_POST["email"]);
$password = mysqli_real_escape_string($connection, $_POST["password"]);
if($email == ""){
$emailErrorMsg = "Please enter the email";
}else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$emailErrorMsg = "Please enter a valid email";
}
if($password == ""){
$passwordErrorMsg = "Enter your password";
}

Une fois qu’il n’y a plus d’erreurs de validation, les valeurs des champs de saisie seront exécutées dans la requête SQL. Pour obtenir la valeur hachée du mot de passe, passez le mot de passe dans le md5() méthode.

if($emailErrorMsg == "" & $passwordErrorMsg == ""){
$password = md5($password);
$query = "SELECT * FROM users WHERE email = '$email' AND password='$password'";
$find_user = mysqli_query($connection, $query);
if(mysqli_num_rows($find_user) == 1){
$_SESSION["email"] = $email;
while($row = mysqli_fetch_assoc($find_user)){
$_SESSION["username"] = $row["username"];
}

header("location:home.php");
}else{
$error = "Invalid credentials";
}
}

Formulaire de connexion avec message d'erreur

Après avoir récupéré le mot de passe haché, transmettez l’e-mail et le mot de passe haché dans la requête SQL et exécutez-le en utilisant le mysqli_query() méthode.

A l’obtention du résultat, il faut le passer dans le mysqli_num_rows() méthode. Si mysqli_num_rows() La méthode renvoie la valeur 1, vous pouvez alors authentifier l’utilisateur.

Stockez l’e-mail et le nom d’utilisateur dans le $_SESSION[] et rediriger l’utilisateur vers la page d’accueil.

Déconnecter l’utilisateur

L’authentification de l’utilisateur se fait à l’aide du $_SESSION[] super global. Pour déconnecter l’utilisateur, vous devez détruire le SESSION et rediriger l’utilisateur vers login.php.

  session_start();
$_SESSION = array();
session_destroy();
header("Location: login.php");
exit;

Un système d’authentification sécurisé est important

Vous avez déjà appris à ajouter un système d’authentification en utilisant PHP et MySQL. Vous pouvez faire passer ce projet au niveau supérieur en y ajoutant des fonctionnalités plus avancées ou bien intégrer ce système dans un projet à grande échelle comme une application de médias sociaux, une page de blog ou tout autre projet majeur. Continuez à apprendre et à créer de nouvelles choses autant que vous le pouvez.

Vous voulez en savoir plus sur PHP ? Il existe de nombreuses manipulations que vous pouvez faire avec le bon savoir-faire PHP.


Une main tenant un petit morceau de papier avec une paire de ciseaux sur le point d'en découper des lettres
Comment manipuler du texte en PHP avec ces 9 fonctions

Avec PHP, vous pouvez couper, compter, trier, ajouter du texte à des tableaux, etc., en utilisant ces 9 fonctions PHP puissantes.

Lire la suite

A propos de l’auteur

Unnati Bamania
(2 articles publiés)

Plus d’Unnati Bamania

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner

— to www.makeuseof.com


Retour à La Une de Logo Paperblog

A propos de l’auteur


Mycamer Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazines