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

Web Perl Discussion :

question variables CGI::Session


Sujet :

Web Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut question variables CGI::Session
    j'utilise des variables de session dans mon script CGI-Perl, et je me pose une question:
    Si un utilisateur ouvre mon site sur 2 pages différentes, et y définit des paramètres de session différents, que va t'il se passer? En gros est ce que le changement d'une variable de session sur une page va modifier celle sur l'autre page ou est ce qu'elles sont distinguées?

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Si un même utilisateur se connecte de deux façon différentes à ton site, il aura sans doute deux sessions séparées, donc les variables sont distinctes.

    --
    Jedaï

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je viens de faire le test, j'ai ouvert 2 fenêtres de mon site en ligne.
    Et quand je change les paramètres de session de l'une, ça change ceux de l'autre... Je sais pas comment faire pour éviter ça ...

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Leeloo5 Voir le message
    Je viens de faire le test, j'ai ouvert 2 fenêtres de mon site en ligne.
    Et quand je change les paramètres de session de l'une, ça change ceux de l'autre... Je sais pas comment faire pour éviter ça ...
    C'est à toi de créer deux sessions différentes, sans ton code je ne peux guère t'en dire plus.

    --
    Jedaï

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Ah ok mais je ne sais pas comment distinguer les sessions alors.

    Car pour l'instant à chaque début de page je récupère la session existante ou en créé une par $session = new CGI::Session() or die CGI::Session->errstr;
    Mais du coup toutes les pages ont la même

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    je suppose que c'est parce que je ne précise pas l'identifiant de la session que je veux ouvrir?
    Mais comment savoir quelle est la session à réouvrir? existe t'il un identifiant spécifique d'une fenêtre? je suis perdue...

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    CGI::Session->new() vérifie d'abord que le client n'a pas un cookie CGISESSID, si le client a ce cookie, il tente de récupérer la session ayant cet id, sinon il crée une nouvelle session (et envoie un cookie au client avec l'id).

    Avec cette technique il devient très difficile pour un même client d'avoir deux sessions (en utilisant deux navigateurs différents toutefois, c'est possible), l'alternative est de faire passer les id de sessions par l'URL, néanmoins ceci est moins sécurisé (les URL passent en clair sur le net et sont stockés dans l'historique lisible par n'importe qui). Si tu fais passer les id par l'URL néanmoins, il sera plus facile d'autoriser plusieurs sessions par utilisateur, mais tu devras faire un travail supplémentaire pour indiquer l'id à new() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CGI::Session->new( param('sid') );
    et la transmettre dans chaque URL (ou requête) (fais un wrapper pour url qui l'ajoute pour toi).

    Quel est ton but exactement ? Si c'est juste pour tester, débrouille toi plutôt avec plusieurs navigateurs, sinon explique-toi, peut-être n'as tu pas vraiment besoin de plusieurs sessions.

    (NB: question sécurité, selon ton application, il peut-être possible d'activer l'ip-match pour la renforcer un tout petit peu)

    --
    Jedaï

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci pour ces précisions. Par contre qu'est ce qu'un wrapper?

    En fait j'ai développé une interface qui permet de consulter des données de différents organismes avec différents critères à selectionner.
    Sur la 1ere page par exemple l'utilisateur choisit l'organisme qu'il veut étudier, et je stocke le résultat dans une variable de session car toute la suite de la consultation se fera sur cet organisme.
    j'aimerai donc gérer l'étude simultanée de 2 organismes (ou de 2 critères d'un organisme) sur des fenetres différentes, d'où mon problème de session.

    peut être y a t'il mieux comme système que les sessions pour mon problème?

  9. #9
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    A priori, ce n'est pas vraiment à ça que doivent servir les sessions... L'organisme ou la caractéristique étudié est spécifique d'une requête, pas de l'individu qui la fait (il ne s'agit pas non plus de données sensibles), donc ces informations devraient transiter directement dans les requêtes, pas passer dans les sessions.

    --
    Jedaï

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Oui c'est sur...

    mais j'ai quand même 5 ou 6 variables de sessions, ça va faire beaucoup à faire passer d'une page à l'autre par les requêtes non?

    Et sinon un wrapper c'est quoi?

  11. #11
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Leeloo5 Voir le message
    mais j'ai quand même 5 ou 6 variables de sessions, ça va faire beaucoup à faire passer d'une page à l'autre par les requêtes non?

    Et sinon un wrapper c'est quoi?
    5 ou 6 variables de sessions ? Tout dépend du contenu de ces variables (certaines sont peut-être de vrais variables de session).

    Un wrapper, c'est juste une fonction pour envelopper quelque chose et le modifier de façon transparente à l'utilisation (wrapper est employé à plein d'endroit en informatique, avec plein de sens différents, mais c'est celui que j'ai employé ici), par exemple ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub aid {
      (my $url = shift) =~ s/(?:\?(.*))?$/"?sid=" . param('sid') . ";$1"/e;
      return $url;
    }
     
    # et partout où tu mettais une url vers ton site :
    print a({-href => aid($thisurl)});
    pour t'éviter de copier cent fois ce code (à chaque url) (et de faire des erreurs).

    --
    Jedaï

Discussions similaires

  1. php-cgi.exe et variables de sessions
    Par isma92 dans le forum Apache
    Réponses: 7
    Dernier message: 24/02/2009, 10h29
  2. Réponses: 2
    Dernier message: 24/10/2006, 22h12
  3. [CGI]problème update de variable de session
    Par LE NEINDRE dans le forum Web
    Réponses: 1
    Dernier message: 18/10/2005, 10h50
  4. [CGI] variable de session trop lourde ????
    Par LE NEINDRE dans le forum Web
    Réponses: 2
    Dernier message: 07/10/2005, 09h12
  5. variable de session
    Par divableue dans le forum ASP
    Réponses: 2
    Dernier message: 23/10/2003, 16h04

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