IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Récupération variables en session


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 125
    Points : 78
    Points
    78
    Par défaut Récupération variables en session
    Bonjour,

    J'essaie de stocker une variable en session (l'id d'un utilisateur) pour l'identifier à chacune de ses requêtes.

    Dans le contrôleur d'entrée sur l'application je fais cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $session = $this->get("session");
    if (!$session->isStarted()){
        $session->start();
    }
    if (!$session->has('idUser')){
        $session->set('idUser', '31414');
    }
    Au contrôleur suivant j'aimerai tout simplement récupérer cet identifiant. Or la session est vide quand je la récupère...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $session = $this->get("session");
    if (!$session->isStarted()){
        $session->start();
    }
     
    if (!$session->has('idUser')) {
        throw $this->createNotFoundException('Vous n\'êtes pas identifié!');
    }
    Du coup l'exception est levée à tous les coups!!

    A noter je n'utilise pas d'identification via les composants d'identification: est-ce la le problème?

    A noter 2 :si je fais un $session = new Session();

    j'arrive à récupérer l'idUSer. Est-ce normal/logique de devoir recréer une nouvelle session à chaque fois?

    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Je ne pense pas qu'il soit utile d'initialiser toi-même les sessions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $session = $this->get("session");
     
    if (!$session->has('idUser')){
        $session->set('idUser', '31414');
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $session = $this->get("session");
     
    if (!$session->has('idUser')) {
        throw $this->createNotFoundException('Vous n\'êtes pas identifié!');
    }
    Consultes le profiler pour voir ce que tu as en session

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 125
    Points : 78
    Points
    78
    Par défaut
    Ben effectivement j'ai du virer le $session->start() qui générait des erreurs
    Mais je suis malheureusement toujours obligé de faire :
    $session = new Session(); -
    L'appel à $session=$this->get('session'); me renvoie toujours une session vide de toutes clés (vu dans le profiler).
    Cela me semble fonctionner à l'envers!?

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $session = $this->getRequest()->getSession();
     
    if ( $session->has('lasession') ) {
    ...
    }
     
    ...
    $session->set('lasession', 'blabla );
    ...
    $session->get('lasession');

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 125
    Points : 78
    Points
    78
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $session = $this->getRequest()->getSession();
    Eh bien c'est bien là que cela me surprend le plus! Cela ne focntionne pas...

    A noter que j'utilise cette fonction pour garder les sessions d'autres applications php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    framework:
       ...
        session:
            storage_id: session.storage.php_bridge
            handler_id: ~
    Est-ce que ça peut venir de là?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    Ton utilisateur est authentifié je pense. Dans ce cas l'objet UserToken doit sûrement contenir l'information dont tu as besoin

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 125
    Points : 78
    Points
    78
    Par défaut
    Non justement je suis obligé de batir une appplication (intranet) sans authentification pour l'instant (je récupère l'identifiant de l'utilisateur depuis une autre appli masi je n'identifie rien du tout dans symfony) Est-ce de là que peut venir le pb?

  8. #8
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    Citation Envoyé par MickSou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $session = $this->getRequest()->getSession();
    Eh bien c'est bien là que cela me surprend le plus! Cela ne focntionne pas...

    A noter que j'utilise cette fonction pour garder les sessions d'autres applications php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    framework:
       ...
        session:
            storage_id: session.storage.php_bridge
            handler_id: ~
    Est-ce que ça peut venir de là?
    en effet c'est étonnant, c'est la méthode officielle !
    désactive la fonction session...bridge et teste pour voir

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 125
    Points : 78
    Points
    78
    Par défaut
    Après quelques recherches cela fonctionne effectivement sous Symfony 2.2 sans la directive
    storage_id: session.storage.php_bridge
    handler_id: ~

    Mais cela ne fonctionne plus en 2.3 avec cette directive. Bug?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    La directive est pourtant toujours présente dans la doc 2.3

    http://symfony.com/doc/current/cookb...hp_bridge.html

Discussions similaires

  1. Applet : récupération d'une variable de session
    Par Quentin D dans le forum Applets
    Réponses: 0
    Dernier message: 20/08/2009, 10h48
  2. Réponses: 11
    Dernier message: 15/10/2008, 10h44
  3. récupération de variable de sessions
    Par Junior_jef dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2008, 15h29
  4. Récupération de variable de session
    Par cel.Saint-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2007, 04h17
  5. Réponses: 7
    Dernier message: 23/04/2006, 01h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo