Bonjour,
Je n'arrive pas a comprendre pourquoi le unset($_SESSION['flash']) détruit ma variable $_SESSION['flash'] avant même d'avoir appelé la fonction getFlashes() .
merci pour votre aide
Voici mon header.php
Sur ma page register.php
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 code de base du starter template dans les exemples bootstrap ..... <div class="container"> <?php $session_instance = Session::getInstance(); echo "<pre>"; var_dump($_SESSION); echo "</pre>"; if($session_instance->hasFlashes()){ // si il y a une variable de $_SESSION['flash'] d'enregistrer alors foreach( $session_instance->getFlashes() as $type=>$message){ // il récupère les infos echo "<div class='alert alert-$type'>$message</div>"; // et les affiche dans une div } } ?>
il y a bien sur le formulaire et des des appel aux fonctions de vérification puis:
Pour finir ma Session :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if($validator->isValid()){ ///une fois que tous les champs sont validé App::getAuth()->register($db, $_POST['username'], $_POST['password'], $_POST['email'] ); //enregistre dans la DB Session::getInstance()->setFlash('success', "Votre compte a été créé. Un email de confirmation vous a été envoyé pour valider votre compte"); //ajoute à la variable session un truc du style : $_SESSION['flash']['success'] ='......message....."; Redirect::pages('login'); // redirige sur la page login }else{ $errors = $validator->getErrors(); // si tous les champs ne sont pas valide, il affiche les erreurs }
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 <?php namespace Core; class Session{ static $_instance; public static function getInstance(){ if(!self::$_instance){ //si elle n'existe pas elle la créer self::$_instance = new Session; } return self::$_instance; // renvois l' instance de Session } public function __construct(){ session_start(); } public function setFlash($statut, $message){ $_SESSION['flash'][$statut] = $message; } public function hasFlashes(){ return isset($_SESSION['flash']); } public function getFlashes(){ $flash = $this->read('flash'); unset($_SESSION['flash']); // Mon problème se trouve là , unset() efface les infos dans 'flash' avant même que getFlashes() ne soit appelé donc avant même:calim2: que le unset() ne soit appelé!!! return $flash; } public function read($key){ return isset($_SESSION[$key]) ? $_SESSION[$key] : null; } public function write($key, $value){ $_SESSION[$key] = $value; } public function delete($key){ unset($_SESSION[$key]); } }
comme vous pouvez le voir je fais un var_dump avant l'appel de getFlashes() et pourtant $_SESSION['flash'] n'apparait pas et si je commente le unset() dans le fichier Session.php tout se passe bien le message s'affiche MAIS le message reste, vu qu'il n'est plus détruit
Partager