Pour rappel MVC (modèle vue controller) nous permet de structurer notre code et ainsi de le disperser. Le modèle / Model : nous permet de récupérer/insérer/modifier/supprimer des données dans la BDD. La vue / View : sont nos fichier affichant la vue résultante (affiche le code HTML) Le controller / Controller : lui nous permet de faire appel à nos models , c'est lui qui contrôle.
Le fichier Entity dans /model nous permet de faire le lien entre les données du model et le controller.
L'utilisateur devra ce rendre sur la page /signup pour avoir acces à un fomulaire d'inscription. Il devra remplir tout les champs car ils sont obligatoires. Les champs seront :
- 1
- l'email
- le mot de passe
- la confirmation du mot de passe
- 2
- la civilité
- nom
- prénom
- code postal
- adresse
- ville
- pays
- numéro de tel
Une fois les champs entièrement remplis l'utilisateur enverra le formulaire à l'aide d'un boutton de soumission : PHP<input type="submit">
L'envoi du formulaire ce fait en méthode POST (défini dans le fomulaire html) : PHP<form method="POST"></form>
L'envoi du formulaire aura pour action d'envoyer l'utilisateur sur la page /signup-post : PHP<form method="POST" action="/signup-post"></form>
Le code back-end de l'application ce chargera de vérifier que le formulaire existe et les données saisis par l'utilisateur.
Quand tout les champs sont vérifié on donne à l'utilisateur un token de 24 caractères , ce token est unique et servira à identifier l'utilisateur dans le mail de confirmation.
S'il n'y à pas d'erreurs lors de l'inscription alors on envoie un mail à l'adresse saisie précedement par l'utilisateur pour comparer le token en BDD et celui généré dans l'url.
L'utilisateur est alors rediriger vers l'adresse /signup-post et connecter directement
Sur la page /signup-post : l'utilisateur verra un message le remerciant pour son inscription lui disant qu'il est connecter et lui demandant de confirmer son inscription dans le mail qui lui à été envoyer.
Un formulaire html sur la page d'inscription : /Signup
Le mot de passe de l'utilisateur est crypter grace à la méthod BCRYPT :
password_hash($password, PASSWORD_BCRYPT);Le token doit être généré alétoirement
Génération d'un token aléatoire
- Avec la méthode uniqid :
$token = uniqid ($prefix = 'D',$more_entropy = true);Génère un identifiant unique, préfixé, basé sur la date et heure courante en microsecondes. Sans prefix (préfixe vide), la chaîne retournée fera 13 caractères. Si more_entropy est à TRUE, elle fera 23 caractères.
- Avec la méthode par la fonction random
$token = $this->random(24);
function random($var){
$string = "";
$chaine = "a0b1c2d3e4f5g6h7i8j9klmnpqrstuvwxy123456789";
srand((double)microtime()*1000000);
for($i=0; $i<$var; $i++){
$string .= $chaine[rand()%strlen($chaine)];
}
return $string;
}- Tout d'abord nous allons commencer par créer une route , qui nous ammenera vers l'url nous affichant le formulaire soit "/signup"
Dans le fichier index.php situé dans public/
->post('/signup-post','signup#inscription', 'Post_SignUp')On déclare la route en méthode POST : ->post
On lui assigne son controller qui se nommera SignupController.php
Le Controller chargera la Class Signup() et lancera la fonction inscription() : signup#inscription
On donne un nom à la route : Post_Signup
Si le formulaire existe Si l'utilisateur à bien complété les champs Si le mot de passe correspond à la vérification du mot de passe
id int(11) NOT NULL AUTO_INCREMENT,
mail varchar(150) NOT NULL,
civility varchar(20) NOT NULL,
lastname varchar(100) NOT NULL,
firstname varchar(100) NOT NULL,
address varchar(100) NOT NULL,
zipcode varchar(100) NOT NULL,
city varchar(100) NOT NULL,
country varchar(100) NOT NULL,
tel varchar(100) NOT NULL,
created_at timestamp NULL DEFAULT current_timestamp(),
is_verify tinyint(1) NOT NULL DEFAULT 0,
password varchar(255) NOT NULL,
token varchar(24) NOT NULL,