Partage
  • Partager sur Facebook
  • Partager sur Twitter

Connexion à un espace membre en PHP et MySQL

Sujet résolu
    11 juillet 2018 à 13:02:08

    Bonjour,
    Je suis actuellement entrain de concevoir un site web avec un espace membre à l'aide de PHP et  MySQL.
    J'ai réussi à réaliser :
    • L'inscription des utilisateurs au site,
    • L'envoi de mail pour confirmer leur inscription : lorsque les utilisateurs cliquent sur le lien envoyé par mail, il sont redirigés vers leur espace membre. Le "header" change alors pour afficher un bouton Déconnexion au lieu du formulaire de connexion.
    • La connexion des utilisateurs au site. Mais lorsque les utilisateurs se connectent au site, le "header" ne se change pas. Je souhaiterez donc qu'il se modifie afin qu'il affiche un bouton Déconnexion à la place du formulaire de connexion.
    Pouvez-vous m'aider à résoudre ce problème svp ?
    Mon code :
    • index.php (Page d'accueil) :
    <?php
      session_start();
      require_once('includes/functions.php');
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
        <meta name="description" content="Burger Quiz"/>
        <meta name="author" content="Titouan Paris"/>
        <link rel="stylesheet" href="style.css"/>
        <link rel="icon" href="img/icon.png"/>
        <title>Burger Quiz - Accueil</title>
      </head>
      <body>
        <?php
          if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])) {
            require('includes/database.php');
            $req = $pdo->prepare('SELECT * FROM users WHERE (username = :username) AND confirmed_at IS NOT NULL');
            $req->execute(['username' => $_POST['username']]);
            $user = $req->fetch();
            if(password_verify($_POST['password'], $user->password)) {
              $_SESSION['auth'] = $user;
              $_SESSION['flash']['success'] = "Vous êtes maintenant connecté !";
              header('Location: dashboard.php');
              exit();
            } else {
              $_SESSION['flash']['danger'] = "Pseudonyme ou mot de passe incorrect.";
            }
          }
        ?>
        <?php
          include_once('includes/header.php');
        ?>
        <?php
          include_once('includes/footer.php');
        ?>
      </body>
    </html>
    • register.php (Page d'inscription) :
    <?php
      session_start();
      require_once('includes/functions.php');
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
        <meta name="description" content="Burger Quiz"/>
        <meta name="author" content="Titouan Paris"/>
        <link rel="stylesheet" href="style.css"/>
        <link rel="icon" href="img/icon.png"/>
        <title>Burger Quiz - Inscription</title>
      </head>
      <body>
        <?php
          include_once('includes/header.php');
     
          if(!empty($_POST)) {
     
            $errors = array();
            require_once('includes/database.php');
     
            if(empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])) {
              $errors['username'] = "Le pseudonyme que vous avez indiqué n'est pas valide.";
            } else {
              $req = $pdo->prepare('SELECT id FROM users WHERE username = ?');
              $req->execute([$_POST['username']]);
              $user = $req->fetch();
              if($user) {
                $errors['username'] = "Ce pseudo est déjà utilisé.";
              }
            }
     
            if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
              $errors['email'] = "L'email que vous avez indiqué n'est pas valide.";
            } else {
              $req = $pdo->prepare('SELECT id FROM users WHERE email = ?');
              $req->execute([$_POST['email']]);
              $user = $req->fetch();
              if($user) {
                $errors['email'] = "Cet email est déjà utilisé.";
              }
            }
     
            if(empty($_POST['password']) || $_POST['password'] == $_POST['username']) {
              $errors['password'] = "Le mot de passe que vous avez indiqué n'est pas valide.";
            }
     
            if(empty($errors)) {
              $req = $pdo->prepare('INSERT INTO users SET username = ?, email = ?, password = ?, confirmation_token = ?');
              $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
              $token = str_random(60);
              $req->execute([$_POST['username'], $_POST['email'], $password, $token]);
              $user_id = $pdo->lastInsertId();
              mail($_POST['email'], "Confirmation de votre compte Burger Quiz", "Afin de valider votre compte, veuillez cliquez sur le lien suivant :\n\nhttp://localhost/Tutoriel_Grafikart/confirm.php?id=$user_id&token=$token");
              $_SESSION['flash']['success'] = "Un email de confirmation vous a été envoyé afin de valider votre compte.";
              header('Location: index.php');
              exit();
            }
     
          }
        ?>
          <div class="register_container">
            <h1>S'inscrire</h1>
     
            <?php if(!empty($errors)): ?>
              <div class="alert alert-danger">
                <p>Vous n'avez pas rempli le formulaire correctement :</p>
                <ul>
                  <?php foreach($errors as $error): ?>
                    <li><?= $error; ?></li>
                  <?php endforeach ?>
                </ul>
              </div>
            <?php endif ?>
     
            <form class="register_form" action="" method="post">
              <input type="text" name="username" placeholder="Pseudonyme"/>
              <input type="email" name="email" placeholder="Adresse email"/>
              <input type="password" name="password" placeholder="Mot de passe"/>
              <input type="submit" name="submit" value="Inscription"/>
            </form>
          </div>
        <?php
          include_once('includes/footer.php');
        ?>
      </body>
    </html>
    • confirm.php : (Page de confirmation par email) :
    <?php
      $user_id = $_GET['id'];
      $token = $_GET['token'];
      require('includes/database.php');
      $req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
      $req->execute([$user_id]);
      $user = $req->fetch();
      session_start();
     
      if($user && $user->confirmation_token == $token) {
        $pdo->prepare('UPDATE users SET confirmation_token = NULL, confirmed_at = NOW() WHERE id =?')->execute([$user_id]);
        $_SESSION['auth'] = $user;
        $_SESSION['flash']['success'] = "Votre compte a bien été validé !";
        header('Location: dashboard.php');
      } else {
        $_SESSION['flash']['danger'] = "Ce token n'est plus valide.";
        header('Location: index.php');
      }
    ?>
    • header.php (Le header que je souhaiterais modifier à la connexion d'un utilisateur) :
    <header>
      <div class="login_container">
        <?php if(isset($_SESSION['auth'])): ?>
          <a href="logout.php">Déconnexion</a>
        <?php else: ?>
          <form class="login_form" action="dashboard.php" method="post">
            <input type="text" name="username" placeholder="Pseudonyme"/>
            <input type="password" name="password" placeholder="Mot de passe"/>
            <input type="submit" name="submit" value="Connexion">
          </form>
        <?php endif; ?>
      </div>
    </header>
    <section>
    <?php if(isset($_SESSION['flash'])): ?>
      <?php foreach($_SESSION['flash'] as $type => $message): ?>
        <div class="alert alert-<?= $type; ?>">
          <?= $message ?>
        </div>
      <?php endforeach ?>
      <?php unset($_SESSION['flash']); ?>
    <?php endif ?>
    • dashboard.php (Espace membre) :
    <?php
      session_start();
      require_once('includes/functions.php');
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
        <meta name="description" content="Burger Quiz"/>
        <meta name="author" content="Titouan Paris"/>
        <link rel="stylesheet" href="style.css"/>
        <link rel="icon" href="img/icon.png"/>
        <title>Burger Quiz - Mon compte</title>
      </head>
      <body>
        <?php
          include_once('includes/header.php');
        ?>
          <h1>Mon compte Burger Quiz</h1>
        <?php
          include_once('includes/footer.php');
        ?>
      </body>
    </html>
    • logout.php (Script de déconnexion du site) :
    <?php
      session_start();
      unset($_SESSION['auth']);
      $_SESSION['flash']['success'] = "Vous êtes maintenant déconnecté !";
      header('Location: index.php');
    ?>
    Pouvez-vous m'aider svp ?
    Merci d'avance :)

    -
    Edité par TitouanDev 11 juillet 2018 à 16:14:37

    • Partager sur Facebook
    • Partager sur Twitter
    - TitouanDev -
      11 juillet 2018 à 13:38:26

      Hello,

      Si j'ai bien suivi tout le truc, vu que tu n'indiques pas avoir de message d'erreur, j'imagine qu'il n'y a pas de $_SESSION(['auth'] sur header.php tout simplement.

      N'as-tu pas oublié le session_start dans ce fichier?  (je ne sais pas si on a tout le code ou juste un bout)

      ps : pourquoi mélanger 2syntaxes pour les conditions dans ton code ? (parfois avec les accolades, parfois avec les deux points)

      • Partager sur Facebook
      • Partager sur Twitter
      Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
        11 juillet 2018 à 13:55:47

        Caroline B. a écrit:

        Hello,

        Si j'ai bien suivi tout le truc, vu que tu n'indiques pas avoir de message d'erreur, j'imagine qu'il n'y a pas de $_SESSION(['auth'] sur header.php tout simplement.

        N'as-tu pas oublié le session_start dans ce fichier?  (je ne sais pas si on a tout le code ou juste un bout)

        ps : pourquoi mélanger 2syntaxes pour les conditions dans ton code ? (parfois avec les accolades, parfois avec les deux points)


        Merci de ta réponse :)

        Si je suis ton raisonnement, à quelle ligne faudrait-il placer le $_SESSION(['auth']) ?

        Comme le header est dans chaque page, la session est automatiquement démarrée car session_start est présent sur toutes les pages.

        Non je ne t'ai pas mis l'intégralité de mon code. Il manque le footer qui est quasiment vide (sans code PHP), functions.php, qui possède plusieurs fonctions personnelles et database.php qui établit la connexion entre la base de données et le code PHP.

        • functions.php :
        <?php
          function debug($variable) {
            echo '<pre>' . print_r($variable, true) . '</pre>';
          }
        
          function str_random($length) {
            $alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
            return substr(str_shuffle(str_repeat($alphabet, $length)), 0, $length);
          }
        ?>
        • database.php :
        <?php
          $pdo = new PDO('mysql:dbname=burger_quiz;host=localhost', 'root', '');
          $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
        ?>
        
        • footer.php :
        </section>
        <footer>
        </footer>

        -
        Edité par TitouanDev 11 juillet 2018 à 14:05:16

        • Partager sur Facebook
        • Partager sur Twitter
        - TitouanDev -
          11 juillet 2018 à 14:09:03

          oh ok pardon, j'ai rien dit alors ^^

          As-tu fait un var_dump($_SESSION) pour vérifier que [auth] y est bien comme prévu ?

          -
          Edité par Caroline B. 11 juillet 2018 à 14:09:14

          • Partager sur Facebook
          • Partager sur Twitter
          Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
            11 juillet 2018 à 14:15:35

            Où devrais-je faire mon var_dump($_SESSION) ?

            • Partager sur Facebook
            • Partager sur Twitter
            - TitouanDev -
              11 juillet 2018 à 14:17:48

              Et bien, si j'ai bien suivi, ton soucis vient du fait que la condition de la ligne 3 dans header.php n'est pas remplie, c'est bien ça ? Donc juste avant le if
              • Partager sur Facebook
              • Partager sur Twitter
              Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                11 juillet 2018 à 14:51:57

                Hello,

                TitouanDev a écrit:


                • header.php (Le header que je souhaiterais moddifier à la connexion d'un utilisateur) :
                <header>
                  <div class="login_container">
                    <?php if(isset($_SESSION['auth'])): ?>
                      <a href="logout.php">Déconnexion</a>
                    <?php else: ?>
                      <form class="login_form" action="dashboard.php" method="post">
                        <input type="text" name="username" placeholder="Pseudonyme"/>
                        <input type="password" name="password" placeholder="Mot de passe"/>
                        <input type="submit" name="submit" value="Connexion">
                      </form>
                    <?php endif; ?>
                  </div>
                </header>
                <section>
                <?php if(isset($_SESSION['flash'])): ?>
                  <?php foreach($_SESSION['flash'] as $type => $message): ?>
                    <div class="alert alert-<?= $type; ?>">
                      <?= $message ?>
                    </div>
                  <?php endforeach ?>
                  <?php unset($_SESSION['flash']); ?>
                <?php endif ?>



                Ce sont des ":" ou ";" avant "?>"

                ?

                • Partager sur Facebook
                • Partager sur Twitter
                  11 juillet 2018 à 15:04:29

                  ce sont des : (ça m'a perturbé aussi lol)

                  http://php.net/manual/fr/control-structures.alternative-syntax.php

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                    11 juillet 2018 à 16:17:23

                    Caroline B. a écrit:

                    Et bien, si j'ai bien suivi, ton soucis vient du fait que la condition de la ligne 3 dans header.php n'est pas remplie, c'est bien ça ? Donc juste avant le if


                    Quand je fais var_dump($_SESSION), il m'indique bien que l'array est vide.

                    -
                    Edité par TitouanDev 11 juillet 2018 à 16:18:22

                    • Partager sur Facebook
                    • Partager sur Twitter
                    - TitouanDev -
                      11 juillet 2018 à 16:39:43

                      Alors faut continuer à remonter la piste pour voir où ça plante. Vérifier que le password_verify dans l'index retourne bien true. Si c'est false,  var_dump($user)  juste après la ligne 22, etc.. :)

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                        11 juillet 2018 à 23:33:34

                        J'ai résolu mon problème, en fait, c'est tout con : dans mon header.php, j'avais mis que form action redirige à dashboard.php (Ligne 6).

                        Il suffisait de supprimer "dashboard.php" et laisser le champ vide. Çà a résolu tous les problèmes !

                        J'ai un second problème qui se pose, lorsque j'essaye de me connecter à l'espace membre et que je rentre des caractères spéciaux (ex : %), il m'affiche cette erreur : 

                        Notice: Trying to get property of non-object in C:\wamp64\www\Tutoriel_Grafikart\index.php on line 23

                        J'ai fait un var_dump($user) et il m'indique que c'est un booléen avec la valeur false.

                        Je me doute que l'erreur doit venir de la requête SQL un peu plus haut mais je ne sais pas où.

                        Je ne sais pas quoi corriger dans mon code pour que celan n'arrive plus.

                        Merci :)

                        -
                        Edité par TitouanDev 11 juillet 2018 à 23:46:25

                        • Partager sur Facebook
                        • Partager sur Twitter
                        - TitouanDev -
                          12 juillet 2018 à 11:27:33

                          Bonjour,

                          Sur ton index.php ligne 22-23 ça doit coincer : ( plus ligne 23 du coup).

                          essayes de remplacer :

                          $user = $req->fetch();
                          if(password_verify($_POST['password'], $user->password)) {

                          par :

                          $user = $req->fetch(PDO::FETCH_OBJ);
                          if ($user && password_verify($_POST['password'], $user->password)) {



                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 juillet 2018 à 17:43:36

                            Ça fonctionne parfaitement ! Je n'ai plus aucune erreur dans mon script ! Merci beaucoup ❤️ !
                            • Partager sur Facebook
                            • Partager sur Twitter
                            - TitouanDev -
                              12 juillet 2018 à 19:15:57

                              TitouanDev a écrit:

                              Ça fonctionne parfaitement ! Je n'ai plus aucune erreur dans mon script ! Merci beaucoup ❤️ !


                              OK et bien nickel alors,

                              PS: pense à mettre le sujet en résolu si c'est le cas =)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 juillet 2018 à 19:30:23

                                Bonjour,

                                 Après plusieurs essais, j'ai rencontré un autre problème :

                                Mon index ne s'affiche plus du tout, pourtant, je n'ai fait que modifier les quelques lignes de code que tu m'as indiqué.

                                Merci d'avance pour votre aide :)

                                PS : Si vous voulez l'intégralité du code source, vous pouvez le consulter ici : https://drive.google.com/drive/folders/1ZKA0QO33-gBlh-HAkr5q7Uan9urOnZMa?usp=sharing

                                -
                                Edité par TitouanDev 21 juillet 2018 à 19:40:47

                                • Partager sur Facebook
                                • Partager sur Twitter
                                - TitouanDev -
                                  21 juillet 2018 à 19:32:51

                                  hello, 

                                  tu peux nous remettre ton code actuel en entier stp ? (je demande par fainéantise, oui)

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                                    21 juillet 2018 à 19:41:14

                                    Caroline B. a écrit:

                                    hello, 

                                    tu peux nous remettre ton code actuel en entier stp ? (je demande par fainéantise, oui)


                                    Tous les fichiers sont dedans : https://drive.google.com/drive/folders/1ZKA0QO33-gBlh-HAkr5q7Uan9urOnZMa?usp=sharing

                                    -
                                    Edité par TitouanDev 21 juillet 2018 à 19:42:19

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    - TitouanDev -
                                      21 juillet 2018 à 19:59:15

                                      TitouanDev a écrit:

                                      Bonjour,

                                       Après plusieurs essais, j'ai rencontré un autre problème :

                                      Mon index ne s'affiche plus du tout, pourtant, je n'ai fait que modifier les quelques lignes de code que tu m'as indiqué.

                                      Merci d'avance pour votre aide :)

                                      PS : Si vous voulez l'intégralité du code source, vous pouvez le consulter ici : https://drive.google.com/drive/folders/1ZKA0QO33-gBlh-HAkr5q7Uan9urOnZMa?usp=sharing

                                      -
                                      Edité par TitouanDev il y a 15 minutes


                                      Hello,

                                      Tu as une page blanche ou une redirection, genre t'es pas logué ou quoi ?

                                      EDIT : essayes de retirer ça :

                                      (PDO::FETCH_OBJ)

                                      logiquement tu n'en as pas besoin si précédemment indiqué

                                      -
                                      Edité par MiNiMan.8.6 21 juillet 2018 à 20:03:35

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        21 juillet 2018 à 20:00:08

                                        ton index ne s'affiche plus du tout, c'est à dire ? page blanche et aucun message d'erreur ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                                          21 juillet 2018 à 20:10:25

                                          PS: tu as activé les erreurs ?

                                          -
                                          Edité par MiNiMan.8.6 21 juillet 2018 à 20:10:46

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            21 juillet 2018 à 20:27:12

                                            Caroline B. a écrit:

                                            ton index ne s'affiche plus du tout, c'est à dire ? page blanche et aucun message d'erreur ?


                                            Oui, j'ai une page blanche, le header ne s'affiche même pas et je n'ai aucun message d'erreur

                                            -
                                            Edité par TitouanDev 21 juillet 2018 à 20:27:27

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            - TitouanDev -
                                              21 juillet 2018 à 20:31:35

                                              plus accès à ton code, folder à la poubelle apparemment
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                                                21 juillet 2018 à 20:39:06

                                                ManuH86 a écrit:

                                                TitouanDev a écrit:

                                                Bonjour,

                                                 Après plusieurs essais, j'ai rencontré un autre problème :

                                                Mon index ne s'affiche plus du tout, pourtant, je n'ai fait que modifier les quelques lignes de code que tu m'as indiqué.

                                                Merci d'avance pour votre aide :)

                                                PS : Si vous voulez l'intégralité du code source, vous pouvez le consulter ici : https://drive.google.com/drive/folders/1ZKA0QO33-gBlh-HAkr5q7Uan9urOnZMa?usp=sharing

                                                -
                                                Edité par TitouanDev il y a 15 minutes


                                                Hello,

                                                Tu as une page blanche ou une redirection, genre t'es pas logué ou quoi ?

                                                EDIT : essayes de retirer ça :

                                                (PDO::FETCH_OBJ)

                                                logiquement tu n'en as pas besoin si précédemment indiqué

                                                -
                                                Edité par ManuH86 il y a 33 minutes

                                                Quand je souhaites accéder à la page index.php, celle-ci est blanche, sans message d'erreur, que je soit connecté ou non, c'est la même page blanche.

                                                Supprimer 

                                                (PDO::FETCH_OBJ)

                                                ne change visiblement rien

                                                PS : Oui, j'ai activé les erreurs

                                                Voici le nouveau lien du code : https://drive.google.com/drive/folders/1AumDp-_RvWXBoThA9xs2MaZKwkX86hkQ?usp=sharing

                                                -
                                                Edité par TitouanDev 21 juillet 2018 à 20:43:18

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                - TitouanDev -
                                                  21 juillet 2018 à 20:49:12

                                                  la premiere partie de ton body ne s'affiche que si certaines variables existent puis il y a un exit() qui stop tout
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                                                    21 juillet 2018 à 23:14:21

                                                    Caroline B. a écrit:

                                                    la premiere partie de ton body ne s'affiche que si certaines variables existent puis il y a un exit() qui stop tout


                                                    Donc, que faudrait-il que je fasse ? J'ai pas très bien compris.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    - TitouanDev -
                                                      21 juillet 2018 à 23:35:55

                                                      bah enlever le exit()

                                                      je ne comprends pas ce qu'il fait là 

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                                                        22 juillet 2018 à 11:51:31

                                                        Caroline B. a écrit:

                                                        bah enlever le exit()

                                                        je ne comprends pas ce qu'il fait là 


                                                        Ah ok !

                                                        J'ai bien enlevé le exit() et ça fonctionne enfin !

                                                        Merci beaucoup à tous pour votre aide :)

                                                        -
                                                        Edité par TitouanDev 23 juillet 2018 à 18:44:58

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        - TitouanDev -
                                                          23 juillet 2018 à 18:46:14

                                                          Encore une petite chose :

                                                          Je suis entrain de créer une page d'édition de profil utilisateur :

                                                          <?php
                                                            session_start();
                                                            require_once('../includes/functions.php');
                                                            require_once('../includes/database.php');
                                                          
                                                            if(isset($_POST['username']) && $_POST['username_confirm']) {
                                                              if(empty($_POST['username']) || $_POST['username'] != $_POST['username_confirm']) {
                                                                $_SESSION['flash']['danger'] = "Les noms d'utilisateur que vous avez indiqué ne correspondent pas.";
                                                              } else {
                                                                $user_id = $_SESSION['auth']->id;
                                                                $username = $_POST['username'];
                                                                $pdo->prepare('UPDATE users SET username = ? WHERE id = ?')->execute([$username, $user_id]);
                                                                header('Location: settings.php');
                                                                $_SESSION['flash']['success'] = "Votre nom d'utilisateur a bien été mis à jour.";
                                                              }
                                                            } elseif(isset($_POST['password']) && $_POST['password_confirm']) {
                                                              if(empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']) {
                                                                $_SESSION['flash']['danger'] = "Les mots de passe que vous avez indiqué ne correspondent pas.";
                                                              } else {
                                                                $user_id = $_SESSION['auth']->id;
                                                                $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
                                                                $pdo->prepare('UPDATE users SET password = ? WHERE id = ?')->execute([$password, $user_id]);
                                                                $_SESSION['flash']['success'] = "Votre mot de passe a bien été mis à jour.";
                                                              }
                                                            }
                                                            ?>
                                                          <!DOCTYPE html>
                                                          <html>
                                                            <head>
                                                              <meta charset="utf-8">
                                                              <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
                                                              <meta name="description" content="Burger Quiz"/>
                                                              <meta name="author" content="Titouan Paris"/>
                                                              <link rel="stylesheet" href="style.css"/>
                                                              <link rel="icon" href="img/icon.png"/>
                                                              <title>Burger Quiz - Mon compte</title>
                                                            </head>
                                                            <body>
                                                              <?php
                                                                include_once('../includes/header.php');
                                                                access_denied_dashboard();
                                                              ?>
                                                                <h1>Mon compte Burger Quiz</h1>
                                                              <?php
                                                                include_once('../includes/header_dashboard.php');
                                                              ?>
                                                                <h2>Mes paramètres :</h2>
                                                          
                                                                <p>Nom d'utilisateur :</p>
                                                                <form class="settings_username" action="" method="post">
                                                                  <table>
                                                                    <tr>
                                                                      <td>
                                                                        <label for="username_now">Pseudonyme actuel</label>
                                                                      </td>
                                                                      <td>
                                                                        <input type="text" name="username_now" id="username_now" value="<?= ... ?>" disabled>
                                                                      </td>
                                                                    </tr>
                                                                    <tr>
                                                                      <td>
                                                                        <label for="username">Nouveau nom d'utilisateur</label>
                                                                      </td>
                                                                      <td>
                                                                        <input type="password" name="username" id="username" placeholder="Nouveau pseudonyme">
                                                                      </td>
                                                                    </tr>
                                                                    <tr>
                                                                      <td>
                                                                        <label for="username_confirm">Confirmer nouveau nom d'utilisateur</label>
                                                                      </td>
                                                                      <td>
                                                                        <input type="text" name="username_confirm" id="username_confirm" placeholder="Nouveau pseudonyme">
                                                                      </td>
                                                                    </tr>
                                                                    <tr>
                                                                      <td></td>
                                                                      <td>
                                                                        <input type="submit" name="submit" value="Modifier">
                                                                      </td>
                                                                    </tr>
                                                                  </table>
                                                                </form>
                                                          
                                                                <p>Adresse email :</p>
                                                                <form class="settings_email" action="" method="post">
                                                                  <table>
                                                                    <tr>
                                                                      <td>
                                                                        <label for="email_now">Adresse email actuelle</label>
                                                                      </td>
                                                                      <td>
                                                                        <input type="email" name="email_now" id="email_now" value="<?= $_SESSION['auth']->email ?>" disabled>
                                                                      </td>
                                                                    </tr>
                                                                    <tr>
                                                                      <td>
                                                                        <label for="email">Nouvelle adresse email</label>
                                                                      </td>
                                                                      <td>
                                                                        <input type="email" name="email" id="email" placeholder="Nouvelle adresse email">
                                                                      </td>
                                                                    </tr>
                                                                    <tr>
                                                                      <td>
                                                                        <label for="email_confirm">Confirmer nouvelle adresse email</label>
                                                                      </td>
                                                                      <td>
                                                                        <input type="email" name="email_confirm" id="email_confirm" placeholder="Nouvelle adresse email">
                                                                      </td>
                                                                    </tr>
                                                                    <tr>
                                                                      <td></td>
                                                                      <td>
                                                                        <input type="submit" name="submit" value="Modifier">
                                                                      </td>
                                                                    </tr>
                                                                  </table>
                                                                </form>
                                                          
                                                                <p>Mot de passe :</p>
                                                                <form class="settings_password" action="" method="post">
                                                                  <table>
                                                                    <tr>
                                                                      <td>
                                                                        <label for="password">Nouveau mot de passe</label>
                                                                      </td>
                                                                      <td>
                                                                        <input type="password" name="password" id="password" placeholder="Nouveau mot de passe">
                                                                      </td>
                                                                    </tr>
                                                                    <tr>
                                                                      <td>
                                                                        <label for="password_confirm">Confirmer nouveau mot de passe</label>
                                                                      </td>
                                                                      <td>
                                                                        <input type="password" name="password_confirm" id="password_confirm" placeholder="Nouveau mot de passe">
                                                                      </td>
                                                                    </tr>
                                                                    <tr>
                                                                      <td></td>
                                                                      <td>
                                                                        <input type="submit" name="submit" value="Modifier">
                                                                      </td>
                                                                    </tr>
                                                                  </table>
                                                                </form>
                                                          
                                                              <?php
                                                                include_once('../includes/footer.php');
                                                              ?>
                                                            </body>
                                                          </html>
                                                          

                                                          Tout fonctionne très bien, mis à part à la ligne 57 : je voudrais récupérer le nom d'utilisateur dans la base de données et l'afficher dans le champ "Nom d'utilisateur actuel". Je ne sais pas comment faire cela.

                                                          Pouvez-vous m'aider svp ?

                                                          PS : J'ai essayé de faire ça :

                                                          $user_id = $_SESSION['auth']->id;
                                                          $pdo->prepare('SELECT username FROM users WHERE id = ?')->execute([$user_id]);

                                                          Mais il m'affiche l'ID et pas le nom d'utilisateur, je ne comprends pas pourquoi.

                                                          -
                                                          Edité par TitouanDev 23 juillet 2018 à 19:15:57

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          - TitouanDev -
                                                            23 juillet 2018 à 20:59:10

                                                            tu as quoi quand tu fais un var_dump du résultat de cette requête ?

                                                            EDIT : je n'avais pas vu que tu avais ouvert un nouveau sujet pour cette question. Repasse celui-ci en résolu et continue sur le nouveau qui n'a rien à voir avec la question de départ ici. Si les suggestions sont éparpillées, ça n'aide personne :) 

                                                            -
                                                            Edité par Caroline B. 23 juillet 2018 à 21:09:05

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                                                              23 juillet 2018 à 21:28:28

                                                              Caroline B. a écrit:

                                                              tu as quoi quand tu fais un var_dump du résultat de cette requête ?

                                                              EDIT : je n'avais pas vu que tu avais ouvert un nouveau sujet pour cette question. Repasse celui-ci en résolu et continue sur le nouveau qui n'a rien à voir avec la question de départ ici. Si les suggestions sont éparpillées, ça n'aide personne :) 

                                                              -
                                                              Edité par Caroline B. il y a 18 minutes


                                                              Ok je fais ça !

                                                              Tu pourras répondre sur le nouveau sujet ducoup ;)

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter
                                                              - TitouanDev -

                                                              Connexion à un espace membre en PHP et MySQL

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown