Exercices envoi d’e-mail en PHP : Série 02
Exercices envoi d’e-mail en PHP : Série 02
-
Exercice 01
-
Énoncé
- On vous demande de créer les pages suivantes:
- connexion.php: qui contient la chaîne de connexion.
- fonctions.php: qui contient les fonctions utilisées dans l’application.
- inscription.php: qui permet à l’utilisateur de créer un compte. Cette page contient un formulaire avec les champs: nom, prenom, email, mot de passe, confirmation de mot de passe et un bouton d’envoi.
- login.php: qui authentifie l’utilisateur. Elle contient un formulaire renfermant une zone de texte pour saisir l’émail, une zone de mot de passe et un bouton d’envoi.
- accueil.php: Cette page est accessible à tous, elle contient :
- une barre de navigation,
- Un bouton login dans la partie droit de la barre de navigation et redirige vers la page login.php.
- Un bouton Créer un compte dans la partie droit de la barre de navigation et redirige vers la page inscription.php.
- Une alerte bleue invite l’utilisateur à créer un compte s’il n’en a pas encore.
- session.php:
- Représente la page à accès limité. Aucun visiteur n’a le droit de voir son contenu s’il n a pas été authentifié par la page login.php.
- Lorsque l’utilisateur est connecté, sa session est sauvegardée dans le cache de son navigateur, et son nom d’utilisateur s’affiche dans la barre de navigation. Les boutons Créer un compte et Login disparaissent au profit du bouton Logout qui permet à l’utilisateur de se déconnecter.
- mot-de-passe-oublie.php:
- Représente la page de récupération de mot de passe .
- Cette page doit contenir le code qui permet de réinitialiser le mot de passe d’un utilisateur lors de la soumission du formulaire grâce à l’envoie d’un e-mail contenant le mot de passe généré en PHP.
- reinitialisation-mot-de-passe.php:
- Lors de l’inscription, aucun champ ne doit être laissé vide et les champs « mot de passe » et « confirmation de mot de passe » doivent être identiques.
- Le mot de passe doit contenir du majuscule, du minuscule et de chiffre avec un minimum de 8 caractères
- Si tous les champs sont valides, on vérifie d’abord si l’émail n’existe pas déjà dans la base de donnée. Si non alors les informations de l’utilisateur seront placées dans la table « utilisateurs » avec hashage des mots de passe
- La structure de la table utilisateur
- Réaliser un système de récupération de mot de passe en PHP.
- Dans cette étape il va falloir ajouter deux champs a la table utilisateurs:
- Ensuite il faudra créer un formulaire où l’utilisateur devra soumettre son adresse email. Une fois le formulaire envoyé, il faudra :
- Vérifier que l’adresse email entrée existe dans la base de données ;
- Insérer la date de la demande dans le champ nouvellement crée (date_recuperation_mot_passe);
- Générer une chaîne de caractères uniques et aléatoire (token). Cette chaîne devra être sauvegardé dans la base de données, dans le champ créé précédemment (token_recuperation_mot_passe)
- Un email devra être envoyé avec 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 l’émail à 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 vers la page login.php;
- 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 15 minutes, 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é.
-
Solution
- Essayez de faire l’exercice de votre côté avant de regarder la Solution !
CREATE TABLE `utilisateurs` (
`cdeusers` int(11) unsigned NOT NULL auto_increment,
`nomUtilisateur` varchar(40) NOT NULL,
`prenomUtilisateur` varchar(40) NOT NULL,
`emailUtilisateur` varchar(40) NOT NULL,
`passwordUtilisateur` varchar(255) NOT NULL,
`dateChangement` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`cdeusers`)
);
date_recuperation_mot_passe timestamp NULL
token_recuperation_mot_passe VARCHAR(255) NULL