Créer un système de connexion avec PHP et MySQL
À propos de ce tutoriel
Dans ce tutoriel, nous allons créer un système de connexion simple en utilisant PHP et MySQL avec l’éditeur de code Visual Studio Code.
Je vous propose de télécharger ce template afin de ne pas passer un temps fou à réaliser le style de notre page web.
Modification du formulaire de connexion
La première chose que l’on peut faire c’est de renommer le fichier index.html en index.php.
En suite à la ligne 40 du fichier index.php nous allons ajouter les attributs méthod et action avec les valeurs « POST » et « login.php » :
<form class="login100-form validate-form" method="POST" action="login.php">
Création du système de connexion
Il est temps de créer notre fichier login.php et de coder le système de connexion :
<?php
session_start();
if (isset($_POST['email'], $_POST['pass'])) {
$email = $_POST['email'];
$pass = $_POST['pass'];
$db = new PDO('mysql:host=localhost;dbname=tutoriel', 'USER', 'PASS');
$sql = "SELECT * FROM user where email = ?";
$result = $db->prepare($sql);
$result->execute($email);
if ($result->rowCount() > 0) {
$data = $result->fetch();
if (password_verify($pass, $data['password'])) {
echo "Connexion effectuée";
$_SESSION['email'] = $email;
}
} else {
$hashedPassword = password_hash($pass, PASSWORD_DEFAULT);
$sql = "INSERT INTO user (email, password) VALUES (?, ?)";
$result = $db->prepare($sql);
$result->execute($email, $hashedPassword);
echo "Enregistrement effectué";
}
}
Premièrement on initialise une session grâce à la fonction session_start, cela va nous permettre de savoir si l’utilisateur est connecté ou pas.
On vérifie ensuite si le formulaire a été soumis grâce à la méthode isset, en faite on vérifie que les valeurs de nos champs ont bien été envoyés par le formulaire.
Si c’est le cas on établie la connexion à notre base de données et on va interroger la BDD en lui passant l’adresse e-mail de l’utilisateur.
Si l’utilisateur n’est pas trouvé dans notre BDD alors on va insérer ses informations, l’adresse e-mail sera enregistrée en clair mais pas le mot de passe, lui sera hashé à l’aide de la fonction password_hash.
Il ne faut jamais enregistrer un mot de passe en clair dans une base de données !
Dans le cas où l’utilisateur est présent dans la BDD, nous vérifions avec la fonction password_verify si le mot de passe issue du formulaire correspond bien au mot de passe hashé provenant de la BDD. Si la fonction retourne true alors on définit en une variable de session qui nous permet d’identifier l’utilisateur.
Vérifier l’état de l’utilisateur
Il faut désormais afficher un message sur notre page web pour savoir quand l’utilisateur est connecté.
Pour ce faire vous aller modifier le fichier index.php en y ajoutant le contenu suivant :
<?php
if (isset($_SESSION['email']))
{
echo "Vous êtes connecté en tant que : " . $_SESSION['email'];
}