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 :
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>
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";
}
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.
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>
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";
}
}
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.
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