Bonjour,

J'ai un problème et je ne trouve pas de solution.
Dans le jour 7 il faut vérifier qu'une variable de session 'User' existe bien et si c'est le cas nous devons pouvoir récupérer une valeur.
Voici mon code :

Session.php

public function read($key = null){
            if($key){
                if(isset($_SESSION$key])){
                    return $_SESSION$key];
                }else{
                    return false;
                }
            }else{
                return $_SESSION;
            }
        }
        public function user($key){
            if($this->read('User')){
                if(isset($this->read('User')->$key)){
                    return $this->read('User')->$key;
                }else{
                    return false;
                }
            }
            return false;
        }

Si je veux obtenir une valeur contenu dans ma variable de session 'User' je dois faire par exemple ceci : echo $_SESSION'User']'id'];
ou bien utiliser mes fonctions précédentes :

UsersController.php

echo $this->Session->user('status');

mais cela ne renvois rien.
dans la fonction user() je passe bien le premier test (read('User') mais il retourne toujours false.

Pouvez-vous m'aider ?
D'avance merci.

7 réponses


iiNku
Réponse acceptée
if(isset($this->read('User')$key])

?

Msappdem
Auteur

Juste un mot, Merci !

As-tu compris ton erreur ?

Msappdem
Auteur

Je n'indiquais rien (pas de valeur) mais j'essayais d'affecter une valeur, c'est bien cela ?

Non. En faite, ta fonction read te permet de récupérer les premiers index du tableau Session, donc ici, l'index 'User'. Ensuite, $_SESSION'User'] est un autre tableau, avec les données que tu lui a affectés.
Donc ta fonction read te retourne $_SESSION'User'] donc un tableau. Et pour accéder à un tableau on utilise les crochets. Je pense que tu as cru que ton read te renvoyait un objet.

Je ne sais pas si je suis clair mais si tu as pas compris, j'essayerais de mieux m'exprimer :p

Msappdem
Auteur

Si c'est clair et j'aurais pu m'en rendre compte en prenant l'exemple de : echo $_SESSION'User']'id'];
Merci pour l'explication.

Voilà, c'est ça :)

Pas de soucis. Maintenant que tu as compris, tu fera plus la même erreur :)