Consulter un tutoriel

Créer un mot de passe oublié

2020-03-25 23:18:12 par François Parisien

Contexte

Supposons qu'il y a une section d'inscription et de connexion sur le site internet. Le visiteur peut donc se créer un compte avec un nom d'utilisateur et un mot de passe. Ces informations sont alors stocké dans une base de données.

Description du besoin

Ici, le besoin est d'offrir à l'utilisateur de pouvoir réinitialiser son mot de passe s'il ne s'en souvient plus. Ceci lui permettra de retrouver son compte plutôt que devoir en créer un nouveau.

Requis techniques

  • PHP >= 7
  • MySQL >= 5.6

Connaissances requises

  • Être capable de faire des opérations avec une base de donnée MySQL;
  • Envoyer des courriels avec PHP;
  • Pouvoir lire les courriels envoyés;

Description du fonctionnement

Lors de l'étape de connexion à un compte, un lien « vous avez oublié votre mot de passe ? » serait disponible afin d'inviter l'utilisateur vers le processus de réinitialisation de son mot de passe.

À l'intérieur de cette page, l'utilisateur sera invité à entrer son courriel. Il recevra ensuite dans sa boîte mail un message qui contiendra un lien unique qu'il devra visiter.

Ce lien permettra à l'utilisateur d'entrer un nouveau mot de passe.

Les étapes à faire

  • Créer deux nouveaux champs dans la table qui contient les comptes utilisateur :
    • Un champ qui contiendra la date à laquelle l'utilisateur a demandé de réinitialiser son mot de passe;
    • Un autre champ qui contiendra une chaîne de caractère aléatoire. On appelle ça un token.
  • Il faudra créer une page où l'utilisateur devra soumettre son adresse courriel. Une fois le formulaire envoyé, il faudra :
    • Vérifier que l'adresse courriel entrée est belle et bien assigné à un compte;
    • Insérer la date de la demande dans le champ nouvellement créer;
    • Générer une chaîne de caractères uniques et aléatoire. Cette chaîne devra Être sauvegardé dans la base de données, dans le champ créé précédemment
    • Un courriel devra Être envoyé avec à l'intérieur un lien vers une nouvelle page. Ce lien devra contenir en paramètre le token créé au point précédent.
  • Une nouvelle page devra Être créé pour redéfinir le mot de passe. C'est le lien vers cette page qui devra Être envoyé dans le courriel à l'utilisateur. Pour accéder à cette page, il faudra absolument qu'il y est en paramètre un token
    • On vérifiera dans la base de donnés si le token passé en paramètre existe dans la base de données. il faudra rediriger l'utilisateur si le token n'existe pas;
    • Il faudra aussi comparer les dates. Si la date inscrite dans la base de données (dans le nouveau champ) et la date d'aujourd'hui ont un décalage de plus de 3 heures, il faudra inviter l'utilisateur à refaire le processus du début. On veut ainsi éviter qu'une demande de réinitialisation de mot de passe puisse trainer éternellement et ainsi, ouvrir une brèche de sécurité;
    • Un formulaire de réinitialisation de mot de passe sera affiché. L'utilisateur pourra entrer un nouveau mot de passe;
    • Lorsqu'il soumettra le formulaire, il faudra modifier le mot de passe du compte par celui indiqué par l'utilisateur. Pour ce faire, on peut aller chercher le compte membre associé au token fourni en paramètre.
    • Une fois le processus de changement de mot de passe complété, il ne faut pas oublier de supprimer le token de la base de données, par soucis de sécurité.

Aller plus loin

Voici quelques idées afin d'aller plus loin avec cette fonctionnalité :

  • Laisser le choix à l'utilisateur de rentrer son courriel ou son nom d'utilisateur;
  • Mettre en place un dispositif qui empêchera un utilisateur de faire des demandes de changement de mot de passe en masse. Om pourrait bloquer l'envoie du formulaire au bout de quelques tentatives en se basant sur une donnée qu'on sauvegarde dans la session de l'utilisateur;
  • La page avec le token pourrait aussi Être sécurisé de la sorte. Si un utilisateur tente d'accéder à cette page plusieurs fois en un court laps de temps, on bloque l'accès momentanément à cette page pour l'utilisateur;
  • Une fois le nouveau mot de passe entré, l'utilisateur pourrait se retrouver connecté automatiquement à son compte membre;

Code Source

Base de données

Table "users"
Voici un exemple de la table qui contiendra les utilisateurs

Code PHP

Fichier "mot-de-passe-oublie.php"
Ce fichier contient le formulaire pour demander de réinitialiser le mot de passe.
Fichier "reinitialisation-mot-de-passe.php"
Ce fichier contient le formulaire pour réinitialiser le mot de passe.

À propos de l'auteur

François Parisien

Développeur PHP de métier, mais développeur PHP surtout par passion. Au début de mon adolescence, je découvre ce langage alors que j'avais soif de faire mon propre site web. C'était au tournant des années 2000. Depuis, je n'ai cessé d'apprendre. Avec le temps, j'ai touché à plusieurs outils : Wordpress, Drupal, Joomla, Symfony, Magento 1 et Magento 2. Cela m'a apporté une plus large connaissance encore. Connaissance que je vais tenter de transmettre ici.


Scroll to Top