Les contenus du cours BRE03 Web Dev Course © 2024 par Mari Doucet sont sous licence CC BY-NC-SA 4.0
Dans le dossier bre03-php-j6
, créez un dossier auth
.
Dans votre PHPMyAdmin vous allez créer une base de données prenomnom_php_j6
qui contiendra une table users
.
La table users
aura 5 champs :
id
: int autoincrémentéemail
: varchar 255 non nullpassword
: varchar 255 non nullfirst_name
: varchar 255 non nulllast_name
: varchar 255 non nullDans un fichier connexion.php
, créez une connexion à votre base de données.
Dans un fichier index.php
vous allez démarrer votre session puis require votre fichier connexion.php
.
Ensuite vous allez récupérer une route dans les paramètres $_GET
si elle existe et la stocker dans une variable (vous trouverez des exemples dans les corrections de l’exercice de routing PHP J2). Si elle n’existe pas initialisez votre variable à NULL.
Une fois que c’est fait : faites un require du fichier layout.phtml
.
Vous allez créer 4 fichiers PHTML :
layout.phtml
home.phtml
register.phtml
login.phtml
Dans votre layout.phtml
, vous allez mettre la structure de base d’une page HTML (doctype, head, body).
Dans votre body vous allez créer une condition en PHP :
home
: faites un require de home.phtml
.inscription
: faites un require de register.phtml
connexion
: faites un require de login.phtml
Votre fichier home.phtml
va contenir deux liens :
index.php?route=inscription
)index.php?route=connexion
)Dans votre dossier, créer un dossier logic
, dans lequels vous créerez 2 fichiers :
register.php
login.php
Votre fichier register.phtml
va contenir un formulaire dont l’action est le fichier logic/register.php
et qui permet de créer un nouvel utilisateur. Il devra donc contenir les champs :
first_name
last_name
email
password
Ainsi qu’un bouton de soumission.
Dans votre fichier logic/register.php
vous allez commencer par faire un require de connexion.php
.
Récupérez ensuite les champs du formulaire d’inscription envoyés par register.phtml
si ils existent.
Pour le champ du mot de passe, vous allez utiliser password_hash
pour créer un nouvel utilisateur dans la base de données, avec son mot de passe chiffré.
Une fois que c’est fait, redirigez votre utilisateur vers la page d’accueil en utilisant le code suivant (attention si vous avez fait un echo ou var_dump avant ce code vous aurez une erreur et c’est normal) :
header('Location: index.php?route=home');
(Vous pouvez vérifier dans PHPMyAdmin qu’un nouvel utilisateur a bien été créé avec un mot de passe chiffré).
Votre fichier login.phtml
va contenir un formulaire dont l’action est le fichier logic/login.php
et qui permet de connecter un utilisateur. Il devra donc contenir les champs :
email
password
Ainsi qu’un bouton de soumission.
Dans votre fichier logic/login.php
vous allez commencer par faire un session_start
puis un require de connexion.php
.
Récupérez ensuite les champs du formulaire de connexion envoyés par login.phtml
si ils existent.
Faites un requête dans la base de données pour sélectionner l’utilisateur qui a l’email reçu dans le formulaire :
Si cet utilisateur n’existe pas dans la base : faites un echo <h1>Email incorrect<\h1>
.
Si il existe, utilisez pass_word_verify pour vérifier si le mot de passe en clair reçu dans le formulaire, correspond bien au mot de passe chiffré trouvé dans la base de données.
Si les mots de passe ne correspondent pas : faites un echo <h1>Mot de passe incorrect<\h1>
.
Si ils correspondent, créez l’entréé $_SESSION['user']
et stockez-y le nom et prénom de l’utilisateur. Une fois que c’est fait, redirigez votre utilisateur vers la page d’accueil en utilisant le code suivant (attention si vous avez fait un echo ou var_dump avant ce code vous aurez une erreur et c’est normal) :
header('Location: index.php?route=home');
Dans votre home.phtml
vous allez ajouter une condition : si votre $_SESSION
contient un user vous allez lui dire bonjour dans un <h1>
en utilisant son prénom et son nom.