---
title: 'Créer un système de connexion avec PHP et MySQL'
description: "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."
pubDate: 2019-03-12
family: 'api-donnees'
tags: []
heroImage: /images/creer-un-systeme-de-connexion-avec-php-et-mysql.webp
videoUrl: 'https://www.youtube.com/watch?v=6aX6C-yqQCk&list=PLkHw7J3J2iaoPo4M47sjpseUVotzobJNY&index=1'
---

## À 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](https://colorlib.com/wp/template/login-form-v15/) 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'];
}
```
