Skip to content

Instantly share code, notes, and snippets.

@TavaresDylan
Last active October 2, 2019 07:54
Show Gist options
  • Select an option

  • Save TavaresDylan/0e69b2365fa1f4bd860356c8b27471fb to your computer and use it in GitHub Desktop.

Select an option

Save TavaresDylan/0e69b2365fa1f4bd860356c8b27471fb to your computer and use it in GitHub Desktop.
Fiche méthode pour créer une inscription utilisateur en PHP en framework MVC

USER SUBSCRIBE PHP MVC

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.

Comment fonctionnera l'inscription

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.

Fonctionnement back-end de l'inscription

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);

Token

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;
    }

User Subscribe

  • 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

Algorithme d'inscription

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

Table User

    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,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment