IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Inscription php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Inscription php
    J'ai un problème lors de l'inscription d'un membre, mais ce problème ne me donne aucune erreur donc je ne vois pas ce que c'est.. La chose étant que lorsque j'envoie mon formulaire d'inscription et bien le membre n'est pas enregistré dans la base de donnée je ne comprends pas pourquoi.

    Voici la fonction présente dans mon controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    function inscription(){
     
        if (isset($_POST['lastName']) && isset($_POST['firstName']) && isset($_POST['email']) 
        && isset($_POST['mdp']) && isset($_POST['phone']) && isset($_POST['adress']) && isset($_POST['confirm_mdp'])) {
     
            if (!empty($_POST['lastName']) && !empty($_POST['firstName']) && 
            !empty($_POST['email']) && !empty($_POST['mdp']) && !empty($_POST['phone']) && 
            !empty($_POST['adress']) && $_POST['mdp']=$_POST['confirm_mdp']) {
     
                    $alerte = "Veuillez remplir tous les champs correctement.";
     
                } else if (!isAmdp($_POST['mdp'])) {
                    echo 'blabla';
     
                    $alerte = "Veuillez entrer un format de mot de passe valide avec au moins 8 caractères, une lettre, un chiffre et un caractère spécial.";
                } else if (!existingEmail($_POST['email'])) {
     
                    inscrire();
     
                    header('Location: index.php?action=inscrire');
     
                    exit($alerte="Bien inscrit");
                } else {
                    $alerte = "Un compte existe déjà avec cet email!";
                }
            }
            require "views/inscription.php";
    }
    Celle qui est appelé et qui est dans le model :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    function inscrire(): bool
    {
        $pass_hache = password_hash($_POST['mdp'], PASSWORD_DEFAULT);
     
        $db=dbConnect();
        $req = $db->prepare("INSERT INTO client(lastName, firstName, email, phone, adress, mdp) 
        VALUES(:lastName, :firstName, :email, :phone, :adress, :mdp)");
     
        $req->execute([
        'lastName'=> $_POST['lastName'],
        'firstName' => $_POST['firstName'],
        'email'=> $_POST['email'],
        'phone'=> $_POST['phone'],
        'adress'=> $_POST['adress'],
        'mdp'=> $pass_hache
        ]);
     
        return true;
    }
     
    /*
    *Vérifie si un email existe
    */
     
    function existingEmail($email): bool
    {
        $db=dbConnect();
        $req = $db->prepare('SELECT EXISTS(SELECT * FROM client WHERE email = ?)');
        $req->execute(array($email));
        return $req->fetch()["EXISTS (SELECT * FROM client WHERE email = '$email')"];
    }
     
    /**
     * Vérifie le format d'un mot de passe
     * @param $str
     * @return bool
     */
    function isAmdp($str): bool
    {
        if (empty($str) ||
            strlen($str) < 8 ||
            !preg_match("#[0-9]+#", $str) ||
            !preg_match("#[a-zA-Z]+#", $str) ||
            !preg_match('/[\'\/~`\!@#\$%\^&\*\(\)_\-\+=\{\}\[\]\|;:"\<\>,\.\?\\\]/', $str)
        ) {
            return false;
        } else {
            return is_string($str);
        }
    }
    ~

    Et enfin voici ma base de donnée, le nom de la table est bien "client": http://www.noelshack.com/2018-49-5-1...64-ins3bdd.png

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Oui mais encore.

    Quand on pose un problème il faut donner le plus d'éléments possibles. Est-ce que l'un des echo que tu utilises s'affiche ? As-tu fait des echo à divers endroits dans ton code pour voir où le programme passe ou ne passe pas ? Es-tu sûr que la connexion à la BDD se fait correctement ? Es-tu sûr que le formulaire appelle la bonne page ?
    Bref tous les éléments qu'on ne peut pas deviner en lisant une portion de code.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par badaze Voir le message
    Oui mais encore.

    Quand on pose un problème il faut donner le plus d'éléments possibles. Est-ce que l'un des echo que tu utilises s'affiche ? As-tu fait des echo à divers endroits dans ton code pour voir où le programme passe ou ne passe pas ? Es-tu sûr que la connexion à la BDD se fait correctement ? Es-tu sûr que le formulaire appelle la bonne page ?
    Bref tous les éléments qu'on ne peut pas deviner en lisant une portion de code.



    Désole pour le manque d'information. Le echo dans la fonction isAmdp ne s'affiche pas. Mais j'ai testé avec un echo juste au dessus( ligne 11) et il s'affiche. La connexion a la base de donnée est bonne car une autre fonction l'utilise et fonctionne. Je pense que le formulaire appelle la bonne page le voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    <!DOCTYPE html>
     
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Inscription</title>
        <link rel="stylesheet" type="text/css" href="inscription.css" />
    </head>
    <body>
     
    <header>
        <h1>Inscris toi</h1>
    </header>
     
    <section>
        <form method="POST" action="">
     
            <table align="center">
                <tr>
                    <td>
                        <label>Nom :</label>
                    </td>
                    <td>
                        <input type="text" name="lastName" id="lastName"autofocus>
                    </td>
                </tr>
                <tr>
                    <td>
                        <label>Prenom : </label>
                    </td>
                    <td>
                        <input type="text" name="firstName" id="firstName">
                    </td>
                </tr>
                <tr>
                    <td>
                        <label>Mail : </label>
                    </td>
                    <td>
                        <input type="email" name="email" placeholder="Ex: jean.dupont@gmail.com" id="email">
                    </td>
                </tr>
     
                <tr>
                    <td>
                        <label>Mot de passe : </label>
                    </td>
                    <td>
                        <input type="password" name="mdp">
                    </td>
                </tr>
                <tr>
                    <td>
                        <label>Confirmation mot de passe : </label>
                    </td>
                    <td>
                        <input type="password" name="confirm_mdp">
                    </td>
                </tr>
                <tr>
                    <td>
                        <label>Phone : </label>
                    </td>
                    <td>
                        <input type="phone" name="phone">
                    </td>
                </tr>
                <tr>
                    <td>
                        <label>Adress  </label>
                    </td>
                    <td>
                        <input type="text" name="adress">
                    </td>
                </tr>
     
            </table>
            <p>
                <input type="reset" value="Retour">
                <input type="submit" value="valider" name="inscription" class="form-button">
            </p>
        </form>
        <p><a href="index.php?action=connexion">Déjà inscrit ?</a></p>
     
     
    </section>
    <footer>
        <div id="triangle"></div>
        <p>Copyright - Tous droits réservés<br/>
    </footer>
    </body>
    </html>
    Voici mon index pour voir le chemin de la connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    require "controllers/controller.php";
     
    if(isset($_GET["action"])){
        $action = htmlspecialchars($_GET["action"]);
     
        switch ($action) {
            case 'home':
                seeRoom();
                break;
     
            case 'temporaryGuest.php':
                temporary();
                break;
     
            case 'rooms':
                rooms();
                break;
     
            case 'add_room':
                addRoom();
                break;
     
            case 'deconnexion':
                deconnexion();
                break;
     
     
            case 'inscription':
                inscription();
                break;
     
            case 'edit_profile':
                editProfile();
                break;
     
            case 'inscription2':
                inscription2();
                break;
     
            case 'seeRoom':
                seeRoom();
                break;
     
            case 'footer':
                footer();
                break;
     
            case 'catalogue':
                catalogue();
                break;
     
            case 'connexion':
                seconnecter();
                break;
     
            case 'updateRoom':
    			updateRoom();
    			break;
     
            default:
                seeError();
                break;
     
     
        }
    } else {
        seeHome();
    }
    J'espere que vous arriverez a trouver.. j'y suis depuis longtemps dessus et je ne comprends vraiment pas

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Ton test ne va pas. Tu affiches "veuillez remplir tous les champs correctement" .... quand ils sont correctement remplis.

    Tu dis. Si le champ A n'est pas vide et si le champ B n'est pas vide, etc... alors afficher le message.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            if (!empty($_POST['lastName']) && !empty($_POST['firstName']) && 
            !empty($_POST['email']) && !empty($_POST['mdp']) && !empty($_POST['phone']) && 
            !empty($_POST['adress']) && $_POST['mdp']=$_POST['confirm_mdp']) {
     
                    $alerte = "Veuillez remplir tous les champs correctement.";

    Alors qu'il faut dire : Si le champ A est vide ou si le champ B est vide, etc... alors afficher le message.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            if (empty($_POST['lastName']) || empty($_POST['firstName'])  || 
            empty($_POST['email'])  || empty($_POST['mdp'])  ||  empty($_POST['phone']) && 
            empty($_POST['adress'])  || $_POST['mdp']!=$_POST['confirm_mdp']) {
     
                    $alerte = "Veuillez remplir tous les champs correctement.";
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par badaze Voir le message
    Ton test ne va pas. Tu affiches "veuillez remplir tous les champs correctement" .... quand ils sont correctement remplis.

    Tu dis. Si le champ A n'est pas vide et si le champ B n'est pas vide, etc... alors afficher le message.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            if (!empty($_POST['lastName']) && !empty($_POST['firstName']) && 
            !empty($_POST['email']) && !empty($_POST['mdp']) && !empty($_POST['phone']) && 
            !empty($_POST['adress']) && $_POST['mdp']=$_POST['confirm_mdp']) {
     
                    $alerte = "Veuillez remplir tous les champs correctement.";

    Alors qu'il faut dire : Si le champ A est vide ou si le champ B est vide, etc... alors afficher le message.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            if (empty($_POST['lastName']) || empty($_POST['firstName'])  || 
            empty($_POST['email'])  || empty($_POST['mdp'])  ||  empty($_POST['phone']) && 
            empty($_POST['adress'])  || $_POST['mdp']!=$_POST['confirm_mdp']) {
     
                    $alerte = "Veuillez remplir tous les champs correctement.";
    Bonjour, merci beaucoup d'avoir vu ceci et de t'être plongé dans le code, j'ai modifié, mais il semblerait que le problème reste le même, je remplis tous les champs et personne n'est ajouté..

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Par expérience je peux te dire qu'il y a rarement un seul problème. Mais des problèmes qui une fois résolus en font apparaître d'autres. Le bogue qui cache les bogues est un classique de l'informatique.

    Poste la nouvelle version et mets un echo dans la fonction inscrire pour voir si elle est appelée.

    En ce qui me concerne, pour déboguer je mets des echo un peu de partout pour circonscrire les parties à contrôler ou pas.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par badaze Voir le message
    Par expérience je peux te dire qu'il y a rarement un seul problème. Mais des problèmes qui une fois résolus en font apparaître d'autres. Le bogue qui cache les bogues est un classique de l'informatique.

    Poste la nouvelle version et mets un echo dans la fonction inscrire pour voir si elle est appelée.

    En ce qui me concerne, pour déboguer je mets des echo un peu de partout pour circonscrire les parties à contrôler ou pas.
    J'ai mis plusieurs echo et décidé d'enlever mes 2 tests pour le moment avec les fonctions isAmdp et Existingemail mon nouveau code est celui ci
    dans le controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function inscription(){
     
        if (isset($_POST['lastName']) && isset($_POST['firstName']) && isset($_POST['email']) 
        && isset($_POST['mdp']) && isset($_POST['phone']) && isset($_POST['adress']) && isset($_POST['confirm_mdp'])) {
     
            if (empty($_POST['lastName']) || empty($_POST['firstName'])  || 
            empty($_POST['email'])  || empty($_POST['mdp'])  ||  empty($_POST['phone']) && 
            empty($_POST['adress'])  || $_POST['mdp']!=$_POST['confirm_mdp']) {
     
                    $alerte = "Veuillez remplir tous les champs correctement.";
     
                }   else {                
                    inscrire();                
     
                    header('Location: index.php?action=inscription');
     
                    exit();
                }
            }
     
            require "views/inscription.php";
    }

    Ma fonction inscrire dans le modele:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function inscrire(): bool
    {
        $pass_hache = password_hash($_POST['mdp'], PASSWORD_DEFAULT);
     
        $db=dbConnect();
        $req = $db->prepare("INSERT INTO client(lastName, firstName, email, phone, adress, mdp) 
        VALUES(:lastName, :firstName, :email, :phone, :adress, :mdp)");
     
        $req->execute([
        'lastName'=> $_POST['lastName'],
        'firstName' => $_POST['firstName'],
        'email'=> $_POST['email'],
        'phone'=> $_POST['phone'],
        'adress'=> $_POST['adress'],
        'mdp'=> $pass_hache
        ]);
     
        return true;
    }

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    TOUT FONCTIONNE ! Je te remercie énormement !!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug formulaire d'inscription PHP sur Iphone/Ipad
    Par VivoBaggio dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/09/2016, 16h18
  2. Formulaire d'inscription PHP
    Par Unpote26 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 30/10/2015, 01h11
  3. [MySQL] Formlaire d'inscription php
    Par Mellow-Khriz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/12/2014, 16h00
  4. Formulaire d'inscription PHP
    Par OranZina80 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/12/2009, 03h07
  5. Script d'inscription php
    Par demenvil dans le forum Langage
    Réponses: 5
    Dernier message: 29/05/2009, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo