Problème de d'affichage de variable de SESSION

Résolu/Fermé
xooit21 Messages postés 99 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 4 août 2023 - Modifié le 24 févr. 2021 à 21:24
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 25 févr. 2021 à 14:21
Bonjour, Je crée actuellement un site web, le problème est que quand je modifie l'adresse email via la page "modifier le profil" la modification ce fait bien dans ma BDD mais sur la page profil de l'utilisateur ça ne change pas, et je ne trouve pas pourquoi.

Page profil de l'utilisateur:
<?php
session_start();
$bdd = new PDO('mysql:localhost=127.0.0.1;dbname=ready-to-run','root','');
if (isset($_SESSION['id']))
 {
?>
<!doctype html>
<html lang="fr">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    <link rel="stylesheet" href="style.css">

    <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    
  </head>
  
  <body>
    <!--Menu-->
    <?php
      include('Menu_connect.php');
    ?>
          <!-- Fin sous Menu-->
        
          

        
    <!--Banner-->
   <!------ Include the above in your HEAD tag ---------->

<body>
    <div id="login"><br>
        
        <div class="container-fluid"style="text-align: center;">
            <div id="login-row" class="row justify-content-center align-items-center">
                <div id="login-column" class="col-md-6">
                    <div id="login-box-1" class="col-md-12">
                        <form id="login-form" class="form" action="" method="post">
                            <h3 class="text-center text-info">Mon profil</h3><br><br>
                            <div class="form-group">
                                <label for="username" class="text-info">Pseudo:  <?php echo $_SESSION['pseudo'];?></label><br>  
                                
                            </div>
                            <div class="form-group">
                                <label for="password" class="text-info">Mot de passe: *********</label><br>
                                
                            </div>
                            <div class="form-group">
                                <label for="remember-me" class="text-info">Mail <?php echo $_SESSION['mail'];?></label><br><br>
                                

                                    <a href="profil_edit_connect.php?id=<?php echo $_SESSION['id'];?>" class="btn btn-primary  m-2 mt-4">Modifier mon profil</a>

                                    <a href="index_connect.php?id=<?php echo $_SESSION['id'];?>" class="btn btn-primary  m-2 mt-4">Retour</a>

                                    

                                 <?php
                                if(isset($erreur))
                                {
                                    echo '<font color="red">'.$erreur."</font>";
                                }
                                
                            ?>
                            </div>
                            
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

      
    </section>
    
    <!--Fin Banner-->

    <!--debut présentation-->
    
    <!--Fin présentation-->

    <!--footer-->
    <?php
      include('footer.php');
    ?>
     <!--fin footer-->
    


    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: jQuery and Bootstrap Bundle (includes Popper) -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
  
    
  </body>
</html>
<?php
}
?>


Page "Modifier le profil:

<?php
session_start();
if (isset($_SESSION['id']))
{
    # code...
?>


<!doctype html>
<html lang="fr">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    <link rel="stylesheet" href="style.css">

    <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    
  </head>
  
  <body>
    <!--Menu-->
    <?php
      include('Menu_connect.php');
    ?>
          <!-- Fin sous Menu-->
        
          <?php
          
ini_set('display_errors', 1);

    $bdd = new PDO('mysql:localhost=127.0.0.1;dbname=ready-to-run','root','');
    if (isset($_POST['Modifier'])) 
    {   
        /*---Selectionner l'utilisateur dans la BDD---*/
        $requser = $bdd->prepare("SELECT * FROM espace_membre WHERE id = ?"); 
        $requser->execute(array($_SESSION['id']));
        $user = $requser->fetch();
                
            

        if (isset($_POST['news_mail']) AND !empty($_POST['news_mail']) AND $_POST['news_mail'] != $user['mail'])
         {
            $newsmail = htmlspecialchars($_POST['news_mail']);
            $insertmail = $bdd->prepare("UPDATE espace_membre SET mail = ? WHERE id = ?");
            $insertmail->execute(array($newsmail, $_SESSION['id']));

            



            header('location: profil_connect.php?id='. $_SESSION['id']);
        }

        if (isset($_POST['news_motDePasse']) AND !empty($_POST['news_motDePasse'])AND isset($_POST['news_motDePasse_Confim']) AND !empty($_POST['news_motDePasse_Confim']))
         {
            $mdp1 = sha1($_POST['news_motDePasse']);
            $mdp2 = sha1($_POST['news_motDePasse_Confim']);

            if ($mdp1 == $mdp2)
            {
                $insertmdp = $bdd->prepare("UPDATE espace_membre SET mot_de_passe = ? WHERE id = ?");
                $insertmdp->execute(array($mdp1, $_SESSION['id']));
                header('location: profil_connect.php?id='.$_SESSION['id']);
            }
            else
            {
                $msg = "Vos mot de passe ne corespondent pas!";
            }
            
        }
         if (isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name']))
         {
            $tailleMax = 2097152;
            $extensionValides = array('jpg', 'jpeg', 'png','gif');
            if ($_FILES['avatar']['size'] <= $tailleMax)
            {
                $extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
                     if (in_array($extensionUpload, $extensionValides)) 
                     {
                        $chemin = "avatar".$_SESSION['id'].".".$extensionUpload;
                        $resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin); 
                        if ($resultat) 
                        {
                            $updateavatar = $bdd->prepare('UPDATE espace_membre SET avatar = :avatar WHERE id = :id');
                            $updateavatar->execute(array('avatar' => $_SESSION['id'].".".$extensionUpload,'id'=> $_SESSION['id']));
                            header('location: profil_connect.php?id='.$_SESSION['id']);
                        }
                        else
                        {
                            $msg = "ERREUR Votre fichier n'a pas ete chargé!!!"; 
                        }
                     }
                     else
                     {
                        $msg = "Votre image de profil doit étre au fomat jpg, jpeg,gif ou png!!!";
                     }
            }
            else
            {
                $msg = "Votre photos de profil ne doit pas depassé 2 Mo";
            }
         }
                    
    }      
?>
        
    <!--Banner-->
   <!------ Include the above in your HEAD tag ---------->

<body>
    <div id="login"><br>
        
        <div class="container-fluid"style="text-align: center;">
            <div id="login-row" class="row justify-content-center align-items-center">
                <div id="login-column" class="col-md-6">
                    <div id="login-box-1" class="col-md-12">
                        <form id="login-form" class="form" action="" method="POST">
                            <h3 class="text-center text-info">Editer mon profil</h3><br><br>
                            
                            <div class="form-group">
                                
                                <label style="float: left; color:#08ABD5">Nouvelle email :</label>
                                <input type="mail" name="news_mail" class="form-control" placeholder="Entrez votre nouvelle email:">
                                
                            </div>
                            <div class="form-group">
                                 <label style="float: left; color:#08ABD5">Nouveau mot de passe :</label>
                                 <input type="password" name="news_motDePasse"class="form-control" placeholder="Entrez votre nouveau mot de passe:">
                                
                            </div>
                                <div class="form-group">
                                 
                                 <label style="float: left; color:#08ABD5"> Confirmer votre nouveau mot de passe :</label>
                                 <input type="password" name="news_motDePasse_Confim"class="form-control" placeholder="Confirmez votre nouveau mot de passe:">
                                
                            </div><br>

                            <div class="form-group">
                                 
                                 <label style="float: left; color:#08ABD5"> Votre avatar:</label>
                                 <input type="file" name="avatar"class="form-control">
                                
                            </div><br>

                                    

                            <div class="form-group">
                                
                                 
                                

                                    <input type="submit" name="Modifier" class="btn btn-info btn-md" value="Valider">
                                    
                                    
                                 <?php
                                if(isset($erreur))
                                {
                                    echo '<font color="red">'.$erreur."</font>";
                                }
                                if(isset($Valide_modif))
                                {
                                    echo '<font color="green">'.$Valide_modif."</font>";
                                }
                                if (isset($redirec))
                                 {
                                    echo '<font color="red">'.$redirec."</font>";
                                }
                                
                            ?>
                            </div>
                            
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

      
    </section>
    
    <!--Fin Banner-->

    <!--debut présentation-->
    
    <!--Fin présentation-->

    <!--footer-->
    <?php
      include('footer.php');
    ?>
     <!--fin footer-->
    


    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: jQuery and Bootstrap Bundle (includes Popper) -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
  
    
  </body>
</html>
<?php
}
?>




Configuration: Windows / Chrome 88.0.4324.182

1 réponse

jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 705
24 févr. 2021 à 21:30
Bonjour,

Comme déjà dit dans une de tes précédentes questions...

Avant toutes choses, commence par gérer les éventuelles erreurs PDO.
Pour cela, lit et applique le contenu de ce lien : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
=> activer les erreurs dans la connexion PDO
=> Placer CHAQUE requête dans un bloc try/catch

Ensuite, mets en pratiques les consignes données ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
=> Activer les erreurs PHP
=> Récupérer proprement les variables AVANT de les utiliser

Sache également qu'on n'utilise plus le SHA1 pour gérer les mots de passe ( pas assez sécurisé ) mais qu'à la place on utilise : https://www.php.net/manual/fr/function.password-hash.php


Ensuite, en ce qui concerne ton souci :

la modification ce fait bien dans ma BDD mais sur la page profil de l'utilisateur ça ne change pas

Je ne vois pas, dans le code que tu nous montres, l'endroit où tu mets à jour les variables de session.... il semble donc normal qu'elles ne soient pas modifiées ...

.
0
xooit21 Messages postés 99 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 4 août 2023
Modifié le 25 févr. 2021 à 07:58
Ok mais écho $_SESSION['mail'] sa affiché ce qu'il a dans la bdd la sa ne le fait pas
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 705 > xooit21 Messages postés 99 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 4 août 2023
25 févr. 2021 à 08:14
$_SESSION['mail'] sa affiché ce qu'il a dans la bdd l

Ca ne se fait pas de façon magique .... à quelle moment (quelles lignes de code) tu prends ce qui se trouve dans la bdd pour le mettre dans cette variable de session ??
0
xooit21 Messages postés 99 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 4 août 2023 > jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024
Modifié le 25 févr. 2021 à 11:31
J'affiche juste la valeur je la prend pas je fais un écho de $_session
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 705 > xooit21 Messages postés 99 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 4 août 2023
25 févr. 2021 à 11:44
.........
Ben oui.. il est bien là le souci .....

Tu nous dis :

quand je modifie l'adresse email via la page "modifier le profil" la modification ce fait bien dans ma BDD

Donc.. tu mets à jour dans la bdd...

Mais ensuite..... si tu veux que ça se mette à jour également dans les variables de session .. ben...il faut bien mettre à jour cette variable de session....
Et là... aucune ligne de code ne se charge de ça dans ce que tu nous montres... il est là le souci !!
0
xooit21 Messages postés 99 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 4 août 2023 > jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024
25 févr. 2021 à 11:46
Ok....donc pourrais tu me dire comment faire stp
0