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








Répondre avec citation
Partager