Problème de d'affichage de variable de SESSION [Résolu]

Signaler
Messages postés
88
Date d'inscription
mardi 2 janvier 2018
Statut
Membre
Dernière intervention
25 février 2021
-
Messages postés
16154
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juin 2021
-
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

Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
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://www.commentcamarche.net/faq/46512-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://www.commentcamarche.net/faq/46512-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 ...

.
Messages postés
88
Date d'inscription
mardi 2 janvier 2018
Statut
Membre
Dernière intervention
25 février 2021
>
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021

Ben..... l'adresse email que l'utilisateur vas entrer non
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582 >
Messages postés
88
Date d'inscription
mardi 2 janvier 2018
Statut
Membre
Dernière intervention
25 février 2021

Tu mets bien à jour l'information dans la base de données .... c'est donc que tu as bien l'information à disposition à ce moment-là....
Qu'est-ce que tu ne comprends pas ??
C'est bien toi qui a écrit le code que tu nous montres... ???
Si oui tu es censé le comprendre....
Messages postés
16154
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juin 2021
869 >
Messages postés
88
Date d'inscription
mardi 2 janvier 2018
Statut
Membre
Dernière intervention
25 février 2021

donc, par exemple, après la ligne 51 de la page "Modifier le profil:
$_SESSION['mail'] = $newmail ;
Messages postés
88
Date d'inscription
mardi 2 janvier 2018
Statut
Membre
Dernière intervention
25 février 2021
>
Messages postés
16154
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juin 2021

Ok d'accord merci
Messages postés
16154
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juin 2021
869 >
Messages postés
88
Date d'inscription
mardi 2 janvier 2018
Statut
Membre
Dernière intervention
25 février 2021

pourras-tu alors marquer la discussion comme résolue?