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

Plugins PHP Discussion :

SfGuard et les sessions [sfGuard]


Sujet :

Plugins PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 24
    Points
    24
    Par défaut SfGuard et les sessions
    Bonjour,

    J'ai un panier avec des produits dedans qui à comme id mon cookie 'Symfony'. Or une fois que le panier et rempli et que l'utilisateur veut commander celui ci doit se connecter, il doit donc s'identifier ... j'utilise le plugin sfGuard. Mais quand celui ci se connecte à son compte utilisateur il change le cookie 'Syfony' ainsi mon panier disparait !

    J'aimerai que quand on se connecte via le plugin,que celui - ci ne recharge pas un nouveau cookie, pas avant d'avoir fermer mon navigateur ?!

    Dans l'attente d'une réponse ...

    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Personne ?
    Je n'ai toujours rien trouvé !!!
    J'ai eu peut être une piste avec le filter.yml

    Merci d'avance

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

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Points : 82
    Points
    82
    Par défaut
    Le mieux serait que tu garde ton panier dans ton objet User il faudrait que tu modifies la classe "apps/frontend/lib/myUser.class.php"

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Est ce que tu pourrais développer s'il te plait parce que je ne comprend pas ce que tu veux que je fasse !

    Merci d'avance

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

    Informations forums :
    Inscription : Février 2009
    Messages : 66
    Points : 82
    Points
    82
    Par défaut
    En gros utiliser l'objet sfUser comme stockage du panier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->getUser()->setAttribute('panier', $objPanier);
    Rien ne t'empêche de mettre un objet dans l'attibut panier. En gros tu peux trfiquer la classe qui se trouve : "apps/frontend/lib/myUser.class.php" et mettre tout les méthode qui te serviront à la gestion d'un panier. Dans que la session est active tout restera stocké. Donc tant que le navigateur ne se ferme pas tu auras ton panier et donc que ton user se logg ou non ne changera rien

    Je crois qu'il y a quelques exemples de panier par l'user qui traine sur le net.

    j'espere que ca t'aidera ou du moins que ca te donnera une bonne piste.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Comme la dit Muspil, tente de passer par la l'object sfUser.
    Il est en effet plus sur de travailler avec les sessions plutot qu'avec un cookie. De plus si le navigatreur n'accepte pas les cookies tu seras dans la m....

    Bon courage

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    Mais une question, le sfGuardUser, il n'utilise pas les cookies au lieu des sessions ?

    Et comme dit les autres, pour garder les valeurs, utilise cette classe là pour garder, les informations nécessaires, et rien ne t'empêche de le faire pour chaque utilisateur.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    J'ai fait ce que vous m'avez dit, seulement je veux créer une session donc avec un nombre aléatoire j'ai donc fait un rand(1, 10000000).
    Le souci c'est qu'a chaque fois que je change de page ou autre ma fonction génère une autre session !
    Pour reconnaitre mon panier j'utilisais la session Symfony

    // Mon schema.yml

    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
    38
    39
    40
    41
    panier:
        _attributes: { phpName: Panier }
        id: { type: INTEGER, primaryKey: true, required: true, autoIncrement: true }
        mtime: { type: INTEGER }
        session: { type: VARCHAR, size: '32', required: true }
        produit_id: { type: INTEGER, required: true, foreignTable: produit, foreignReference: id, onDelete: cascade }
        nom: { type: VARCHAR, size: '100' }
        qte: { type: INTEGER }
        prix_ht: { type: INTEGER }
        prix_ttc: { type: INTEGER }
    
    produit:
        _attributes: { phpName: Produit }
        id: { type: INTEGER, primaryKey: true, required: true, autoIncrement: true }
        code: { type: VARCHAR, size: '16' }
        boutique_id: { type: INTEGER, required: true, foreignTable: boutique, foreignReference: id, onDelete: cascade }
        famille_id: { type: INTEGER, required: true, foreignTable: produit_famille, foreignReference: id, onDelete: cascade }
        marque_id: { type: INTEGER, required: true, foreignTable: produit_marque, foreignReference: id, onDelete: cascade }
        ordre: { type: INTEGER }
        nom: { type: VARCHAR, size: '100', required: true }
        stripped_nom: { type: VARCHAR, size: '100' }
        resume: { type: VARCHAR, size: '255' }
        description: { type: LONGVARCHAR, required: true }
        prix_ht: { type: INTEGER }
        tva_id: { type: INTEGER, required: true, foreignTable: tva, foreignReference: id }
        montant_tva: { type: INTEGER, required: true }
        prix_ttc: { type: INTEGER, required: true }
        photo: { type: VARCHAR, size: '255' }
        rating_field: { type: FLOAT }
        _indexes: { '': [stripped_nom] }
    
    commande_ligne:
        _attributes: { phpName: CommandeLigne }
        id: { type: INTEGER, primaryKey: true, required: true, autoIncrement: true }
        commande_id: { type: INTEGER, required: true, foreignTable: commande, foreignReference: id, onDelete: cascade }
        produit_id: { type: INTEGER, required: true, foreignTable: produit, foreignReference: id, onDelete: cascade }
        texte: { type: VARCHAR, size: '100', required: true }
        qte: { type: INTEGER, required: true }
        prix_ht: { type: INTEGER, required: true }
        prix_ttc: { type: INTEGER, required: true }
    // Mon myUser.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class myUser extends sfGuardSecurityUser
    {
        public function addSession(){
     
            $this->setAttribute('banane', rand(1, 1000000000));
            return $this->getAttribute('banane');
        }
    }
    //dans mon template

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     echo "Ma session :".$sf_user->addSession();
    Merci de votre aide

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    Tout à fait normal avec ta fonction addSession : A chaque tu lui attribut une nouvelle valeur à banane....

    Du genre si tu ne veux pas que ca le fasse, fais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class myUser extends sfGuardSecurityUser
    {
        public function addSession(){
     
            if($this->getAttribute('banane') == '' || $this->getAttribute('banane') == NULL)
              $this->setAttribute('banane', rand(1, 1000000000));
            return $this->getAttribute('banane');
        }
    }

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Super magnifique !!
    ça fonctionne !!!!
    Merci beaucoup !

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    De rien avec plaisir...

    Bonne chance pour ton panier maintenant...

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Mon panier est déja créer, il y avait juste cette erreur !!
    Tu m'enlèves une belle épine du pied !! ^^
    Merci encore

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 117
    Points : 123
    Points
    123
    Par défaut
    je sais que j'avais bien galérer juste en utilisant les sessions...

    Ensuite, ce que je fais aussi c'est que à chaque fois je vide la valeur de la session, avant d'attribuer une nouvelle valeur, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        $user->getAttributeHolder()->remove('session');
        $user->setAttribute('session', $request->getParameter('nouvelleValeur')
    );

    Pense aussi que quand l'utilisateur va se délogguer de supprimer la valeur de la session Tu risque autrement d'avoir quelque soucis.

    Mais je pense que t'y pensé. Et encore de rien avec plaisir que je rend de l'aide, quand j'en ai besoin, on me répond aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] securite avec les sessions.
    Par krapoulos dans le forum Langage
    Réponses: 7
    Dernier message: 05/11/2005, 14h41
  2. Problème avec les sessions
    Par philippef dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2005, 15h19
  3. [Sessions] Les sessions multi-applications
    Par brazza dans le forum Langage
    Réponses: 4
    Dernier message: 13/10/2005, 17h53
  4. les sessions PHP
    Par smh_master dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2005, 14h13
  5. PB Réseau sur les sessions ouvertes ?
    Par nico___23 dans le forum Développement
    Réponses: 1
    Dernier message: 07/01/2005, 09h50

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