Variables de session et cookies qui se suppriment

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Variables de session et cookies qui se suppriment

Re: Variables de session et cookies qui se suppriment

par Patriboom » 19 sept. 2018, 00:00

Une idée de débogage pourrait t'aider.
Insère des var_dump($_SESSION) en certains points importants de code. Ainsi tu trouveras où ton information est construite ou détruite.
Dans le code ci-haut, je ne vois qui permette de comprendre la destruction du contenu.

Variables de session et cookies qui se suppriment

par electralite » 27 août 2018, 10:53

Salut, j'ai un gros soucis, mes variables de session se perdent quand j'actualise ma page, les session_start sont bien présentes sur toutes le pages mais rien n'y fait, je me connecte sur mon site, pour le moment tout fonctionne, puis des que j'actualise ca me fais l'effet d'une session_destroy qui est nulle part dans mon code... De plus les cookies quand je met avec setcookies ne se créent même pas..

J'ai vraiment besoin d'aide sir ce coup la ...

Mon code :
<?php
session_start();
 
$path = $_SERVER['PHP_SELF'];
$page = basename ($path);
 
$host_name = 'db*********************';
$database = 'db************';
$user_name = 'db*********';
$password = '**********';
 
$dbcomptes = null;
try {
  $dbcomptes = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password);
} catch (PDOException $e) {
  echo "Erreur!: " . $e->getMessage() . "<br/>";
//  die();
}
 
$MessageLogIn = '';
$MessageRegister = '';
 
if(!empty($_POST['EmailLogin']) && !empty($_POST['PasswordLogin']))
{
 
  $login = $dbcomptes->prepare('SELECT * FROM comptes WHERE email = ?');
  $login->execute(array($_POST['EmailLogin']));
  $donnees = $login->fetch();
  $password = $_POST['PasswordLogin'];
  $isPasswordCorrect = password_verify($password, $donnees['password']);
  if ($isPasswordCorrect)
  {
    $_SESSION['Prenom'] = $donnees['prenom'];
    $_SESSION['Nom'] = $donnees['nom'];
    $_SESSION['id'] = $donnees['id'];
    $_SESSION['Email'] = $donnees['email'];
    $_SESSION['Connected'] = 1;
        setcookie('email', $donnees['email'], time() + 2*3600, null, null, false, true);
        setcookie('id', $donnees['id'], time() + 2*3600, null, null, false, true);
        setcookie('prenom', $donnees['prenom'], time() + 2*3600, null, null, false, true);
        setcookie('nom', $donnees['nom'], time() + 2*3600, null, null, false, true);
        setcookie('pass', $donnees['password'], time() + 2*3600, null, null, false, true);
        setcookie('connect', 1, time() + 2*3600, null, null, false, true);
    $MessageLogIn = 'Vous étes bien connécté ! Bienvenue ' . $_SESSION['Prenom'] . '!';
  }
  else
  {
    $MessageLogIn = 'Le couple mot de passse / E-Mail ne correspond pas !';
 
  }
}
}
elseif (!empty($_POST['Prenom']) && !empty($_POST['Nom']) && !empty($_POST['Email']) && !empty($_POST['Password']) && !empty($_POST['PasswordRepeat']))
{
  $prenom = $_POST['Prenom'];
  $nom = $_POST['Nom'];
  $email = $_POST['Email'];
  $passwd = $_POST['Password'];
  $passwdRepeat = $_POST['PasswordRepeat'];
 
  $register = $dbcomptes->prepare('SELECT EXISTS (SELECT * FROM comptes WHERE email= ?)');
  $register->execute(array($email));
  $resultat = $register->fetchColumn();
  if($resultat == 1)
  {
     $MessageRegister = 'L\'e-mail est déjà utilisé !';
  }
  else
  {
    if ($passwd == $passwdRepeat){
      $password = password_hash($passwd, PASSWORD_DEFAULT);
      $req = $dbcomptes->prepare('INSERT INTO comptes(password, email, prenom, nom, perm_lvl) VALUES(:password, :email, :prenom, :nom, :perm_lvl)');
      $req->execute(array(
       'password' => $password,
       'email' => $email,
       'prenom' => $prenom,
       'nom' => $nom,
       'perm_lvl' => 1
      ));
      $MessageRegister = 'Votre compte est bien crée !';
    }
    else {
      $MessageRegister = 'Les deux mots de passe ne correspondent pas !';
    }
  }
 
}
elseif (!empty($_POST['Prenom']) || !empty($_POST['Nom']) || !empty($_POST['Email']) || !empty($_POST['Password']) || !empty($_POST['EmailLogin']) || !empty($_POST['PasswordLogin']))
{
  $MessageLogIn = 'Veuillez entrer tout les parametres !';
  $MessageRegister = $MessageLogIn;
}
 
 
?>
je l'utilise ici pour mes boutons déconnexion ect. à savoir que la page logout.php n'est jamais sollicitée sauf si on appuie sur déconnexion..
<?php
                  if (!empty($_SESSION['id']))
                  {
                                        $nom = $_SESSION['Nom'];
                                        $prenom = $_SESSION['Prenom'];
                                        $id = $_SESSION['id'];
                                        $email = $_SESSION['Email'];
                    echo '<li><a style="border-radius: 6px; background-color: red;" href="logout" class="play-icon">Logout</a></li>';
                    echo '<li><a style="border-radius: 6px; background-color: orange;" href="panel/index" data-toggle="modal" class="play-icon">Gestion</a></li>';
                                        echo '<li><a style="border-radius: 6px; background-color: grey; border: 1px solid black;" href="#" data-toggle="modal" class="play-icon">' . $prenom . '</a></li>';
                  }
                  else
                  {
                    echo '<li><a href="#myModal2" data-toggle="modal" class="play-icon">Connexion</a></li>';
                  }
                ?>
Merci d'avance !