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 :

Débuggage formulaire d'inscription


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2024
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2024
    Messages : 24
    Par défaut Débuggage formulaire d'inscription
    Bonjour à tous

    Je me permets de créer ce post car j'ai terriblement besoin d'aide pour débbuger le site que je suis en train de créer, j'ai déjà fait des recherches pour essayer de comprendre les erreurs mais vu que cela fait plusieurs jours que je reste bloquée sans avancée je viens vous demander de l'aide. Par ailleurs, je travaille HTML, CSS, Javascript, PHPMyadmin et WAMP.

    La situation est simple, j'essaye de créer un formulaire d'inscription pour un site de recette.

    Voici le code HTML pour l'inscription :

    Code html : 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
    <?php
        session_start();
    ?>
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Les Recettes du Programmeur</title>
        <link rel="shortcut icon" type="image/x-icon" href= "../../Rattrapage Bloc 3/Ressources/stir-fry.png">
        <link rel="stylesheet" href="PageSignIn.css">
     
    </head>
     
    <body>
        <header>
        </header>
        <main>
            <h1 class="TitreSite">Les Recettes du Programmeur</h1>
            <div class="container">
                <div class="form_area">
                    <p class="title">Sign In</p>
                    <form method="POST" action="signin.php">
                        <div class="form_group">
                            <label class="sub_title" for="name">Pseudo</label>
                            <input placeholder="Entre votre pseudo" class="form_style" type="text" id="nom">
                        </div>
     
                        <div class="form_group">
                            <label class="sub_title" for="password">Password</label>
                            <input placeholder="Enter your password" id="password" class="form_style" type="password">
                        </div>
                        <div class="form_group">
                            <label class="sub_title" for="passwordCheck">Check Password</label>
                            <input placeholder="Enter your password" id="passwordCheck" class="form_style" type="password">
                        </div>
                        <div>
                            <button class="btn" name="submit">Inscription</button>
                            <p class="account">Vous avez un compte ? <a class="link" href="PageLogin.php">Log in !</a></p>
                        </div>
                    </form></div>
            </div>
        </main>
     
        <footer class="Footer">
            <div>
            <div class="FooterTxT">Mon Footer</div>
            </div>
        </footer>


    Et voici le code PHP pour effectuer l'inscription :


    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
    <?php
     
    session_start();
     
    if (isset($_POST['submit']))
    {
        $name = htmlspecialchars($_POST['nom']);
        $password = htmlspecialchars($_POST['password']);
     
        $con = new PDO("mysql:host=localhost;dbname=recettedev", 'root', '');
     
     
        if (empty($name) || empty($password)) {
     
            echo "Sign in Failed, please try again";
     
        } else {
     
        $sql = "SELECT * FROM user WHERE MDP = '$password' ";
        $result = $con->prepare($sql);
        $result->execute();
        $data = $result->fetch();
     
        if ($data->rowCount() > 0)
        {
            echo "Vous possédez déjà un compte";
     
        } else {
     
            $sql = "INSERT INTO user (Pseudo, MDP, Role) VALUES ('$name', '$password', '1')";
            $req = $db->prepare($sql);
            $req->execute();
     
            $_SESSION['user_id'] = $data['IDUsers'];
            $_SESSION['user_pseudo'] = $data['Pseudo'];
            $_SESSION['user_role'] = $data['Role'];
            $_SESSION['user_login'] = "Logged in";
            echo "Vous êtes bien enregistré, bienvenue", $_SESSION['user_pseudo'];
            header("Location: PageMain.php");
     
        }
        }
     
    }

    Mon problème est qu'a chaque fois que j'essaye de tester l'inscription, j'obtiens les erreurs Undefined array key "nom" et Undefined array key "password".
    Je comprends bien que PHP pense que mes valeurs nom et password sont vides mais je ne comprends pas pourquoi sachant que lors de mes test je remplis toujours les inputs.
    Si une personne pouvait m'expliquer la raison de mon problème, je vous en serait extrêmement reconnaissante. Je débute en PHP donc je suppose qu'il doit s'agir d'un problème de logique mais je dois dire que je ne comprends pas.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 691
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 691
    Par défaut
    affichez le contenu de $_POST pour voir tout ce que vous recevez.

    vous pouvez essayer cette fonction qui affichera n'importe quelle variable composée d'objets, tableaux, code XML, etc.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function aff($var)
    {
    	echo "<pre>";
    	echo htmlspecialchars(var_export($var, TRUE));
    	echo "</pre>";
    }

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 521
    Par défaut
    Bonjour,

    C'est normal parce que PHP récupère les valeurs des éléments HTML en fonction de l'attribut name et pas id.

    Vos éléments HTML n'ont aucun attribut name.

    La logique du script PHP n'est pas Ok, car vous vérifiez l'existence seulement avec le mot de passe, donc si par hasard deux personnes ont le même mot de passe, vous aurez un sérieux problème .

    Après il y a d'autres remarques
    • Il ne faut pas utiliser select * dans les requêtes pour des raisons d'ergonomie et performance, mais plutôt seulement les colonnes dont vous avez besoin.
    • Il ne faut pas injecter les valeurs des variables récupérées directement dans les requêtes comme vous le faites, ça risque des injections SQL.
    • Préparez correctement vos requêtes avec des marqueurs nommés/anonymes.
    • htmlspecialchars ne protège rien ici, on l'utilise plutôt pour protéger les données provenant de la base à l'utilisateur lors de l'affichage

  4. #4
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2024
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2024
    Messages : 24
    Par défaut
    Bonjour à tous !

    Merci pour vos réponses, je ne savais pas que l'attribut name était indispensable.
    Mais bon c'est en faisant ce genre d'erreur qu'on apprend.

    @Toufik83 :

    Merci pour tes conseils, j'ai améliorer mon code grâce à tes retours.

    Merci encore à tous de m'avoir répondu !

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

Discussions similaires

  1. Aide référencement site web sous wordpress
    Par Jibego dans le forum WordPress
    Réponses: 1
    Dernier message: 22/08/2014, 17h41
  2. Conception d'un site web (inscription utilisateur)
    Par mkabness dans le forum Général Conception Web
    Réponses: 10
    Dernier message: 31/01/2013, 17h27
  3. besoin d'aide pour site web
    Par monobloclimber dans le forum Débuter
    Réponses: 7
    Dernier message: 04/07/2008, 13h39
  4. [MySQL] aide pour site web
    Par lulu57 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/06/2008, 13h20
  5. Aide pour insérer un fichier flash dans un site web
    Par constitain dans le forum Flash
    Réponses: 2
    Dernier message: 26/07/2006, 22h59

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