Inscription en PHP

Par Clouder le 04 Mar 2019 (Édité) 10 +99

Pour débuter notre site nous allons créer un formulaire d'inscription afin d'enregistrer de nouveaux utilisateurs dans une base de données (BDD).

Pour cela, il faut créer un formulaire avec une méthode "POST" qui nous renvoie les données sur la page en cours afin de les traiter et de les enregistrer.


Page inscription.php


<?php
    session_start();
    include('bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD

    // S'il y a une session alors on ne retourne plus sur cette page
    if (isset($_SESSION['id'])){
        header('Location: index.php'); 
        exit;
    }

    // Si la variable "$_Post" contient des informations alors on les traitres
    if(!empty($_POST)){
        extract($_POST);
        $valid = true;

        // On se place sur le bon formulaire grâce au "name" de la balise "input"
        if (isset($_POST['inscription'])){
            $nom  = htmlentities(trim($nom)); // On récupère le nom
            $prenom = htmlentities(trim($prenom)); // on récupère le prénom
            $mail = htmlentities(strtolower(trim($mail))); // On récupère le mail
            $mdp = trim($mdp); // On récupère le mot de passe 
            $confmdp = trim($confmdp); //  On récupère la confirmation du mot de passe

            //  Vérification du nom
            if(empty($nom)){
                $valid = false;
                $er_nom = ("Le nom d' utilisateur ne peut pas être vide");
            }       

            //  Vérification du prénom
            if(empty($prenom)){
                $valid = false;
                $er_prenom = ("Le prenom d' utilisateur ne peut pas être vide");
            }       

            // Vérification du mail
            if(empty($mail)){
                $valid = false;
                $er_mail = "Le mail ne peut pas être vide";

                // On vérifit que le mail est dans le bon format
            }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){
                $valid = false;
                $er_mail = "Le mail n'est pas valide";

            }else{
                // On vérifit que le mail est disponible
                $req_mail = $DB->query("SELECT mail FROM utilisateur WHERE mail = ?",
                    array($mail));

                $req_mail = $req_mail->fetch();

                if ($req_mail['mail'] <> ""){
                    $valid = false;
                    $er_mail = "Ce mail existe déjà";
                }
            }

            // Vérification du mot de passe
            if(empty($mdp)) {
                $valid = false;
                $er_mdp = "Le mot de passe ne peut pas être vide";

            }elseif($mdp != $confmdp){
                $valid = false;
                $er_mdp = "La confirmation du mot de passe ne correspond pas";
            }

            // Si toutes les conditions sont remplies alors on fait le traitement
            if($valid){

                $mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$");
                $date_creation_compte = date('Y-m-d H:i:s');

                // On insert nos données dans la table utilisateur
                $DB->insert("INSERT INTO utilisateur (nom, prenom, mail, mdp, date_creation_compte) VALUES 
                    (?, ?, ?, ?, ?)", 
                    array($nom, $prenom, $mail, $mdp, $date_creation_compte));

                header('Location: index.php');
                exit;
            }
        }
    }
?>


<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Inscription</title>
    </head>
    <body>      
        <div>Inscription</div>
        <form method="post">
            <?php
                // S'il y a une erreur sur le nom alors on affiche
                if (isset($er_nom)){
                ?>
                    <div><?= $er_nom ?></div>
                <?php   
                }
            ?>
            <input type="text" placeholder="Votre nom" name="nom" value="<?php if(isset($nom)){ echo $nom; }?>" required>   
            <?php
                if (isset($er_prenom)){
                ?>
                    <div><?= $er_prenom ?></div>
                <?php   
                }
            ?>
            <input type="text" placeholder="Votre prénom" name="prenom" value="<?php if(isset($prenom)){ echo $prenom; }?>" required>   
            <?php
                if (isset($er_mail)){
                ?>
                    <div><?= $er_mail ?></div>
                <?php   
                }
            ?>
            <input type="email" placeholder="Adresse mail" name="mail" value="<?php if(isset($mail)){ echo $mail; }?>" required>
            <?php
                if (isset($er_mdp)){
                ?>
                    <div><?= $er_mdp ?></div>
                <?php   
                }
            ?>
            <input type="password" placeholder="Mot de passe" name="mdp" value="<?php if(isset($mdp)){ echo $mdp; }?>" required>
            <input type="password" placeholder="Confirmer le mot de passe" name="confmdp" required>
            <button type="submit" name="inscription">Envoyer</button>
        </form>
    </body>
</html>
Cette pub permet au site de vivre ...

10 commentaires

Tu veux participer ?
Alors connecte toi ou inscris toi et viens participer !

Hello @eddysim92,


Quel est le nom de l'éditeur que tu utilises ? 🤔

Si tu penses que tu as trouvé une ou plusieurs erreurs dans les articles de formations, n'hésite pas, c'est ici 😉

Si tu as un problème avec ton code, la communauté sera ravi de t'aider si tu crée ton topic 😉

if ($req_mail['mail'] <> ""){
                    $valid = false;
                    $er_mail = "Ce mail existe déjà";
                }
            }


Bonjour, juste pour info j'ai vus que mon éditeur de code m'afficher une erreur sur le code pour les balise ouverte

 if ($req_mail['mail'] <> ""){

Je vais modifier certaine chose et voir si sa marche donc je vais surement supprimer ces balise mais sa ma parut bizarre d'entrée du coup si jamais une réponse mes apporté rapidement sa m'aiderait.

Et en sachant que ces donnée dans le code de base avec pas plus d'informations dans la vidéo au sujet de ces balise j'ai du coup préféré vous le signaler direct au cas ou ( se qui m’étonnerais fortement) se serais un oubli / une faute de frappe.

Merci pour les tuto et tous sa 😃 <3

PS: J'avais oublié de copié le <?php du début de page sa doit surement avoir une utilité ^^ je laisse le comment au cas ou y'aurais quand même quelque chose de louche

Et sinon si vous pouvez indiquer en réponse a quoi les balise servent dans la requête je suis preneur.

Re:


Rappel aux membres : en cas de problème de code, créez votre topic 😁

bonjour comment rajouter peudo dans inscription.php j'ai tenté plusieur chose reste infructueuse

Hello @DevelopArt, @Gullme et @Naguib,


Afin d'obtenir au mieux de l'aide, vous pouvez créez vos topics sur le présent forum 😉

Bonjour, si je veux rajouter le sexe et la date de naissance, comment puis-je le récupérer de mon formulaire ? Merci de bien vouloir de repondre au plus vite possible, c'est urgent.

Bonjour j'ai un autre problème. J'ai bien créé mes différente page notamment inscription.php or je ne peux pas m'inscrire

faut t'il relier le sql ou phpmyadmin vers les dossier php pour que la connexion se fasse ?

Bonjour, Si tu as ce problème c'est que tu as mal renseigné ton fichier pour faire ta connexion à ta BDD

bonojur j'ai un probleme avec la BDD lorsque je veux afficher ma page web on m'affiche : Erreur : Impossible de se connecter à la BDD ! j'ai du mal a résoudre le probleme, merci d'avance.

Cette pub permet au site de vivre ...