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

Langage PHP Discussion :

Sessions et multiples instances navigateur


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Sessions et multiples instances navigateur
    Bonjour,

    j'ai codé une application de gestion de dossiers en utilisant allègrement les variables de session (PHP 5.3).
    Tout se passait bien jusqu'à ce que les utilisateurs se mettent à ouvrir plusieurs instances du navigateur (IE 8) pour accéder à plusieurs dossiers à la fois.
    Résultat : des infos enregistrées sur le mauvais dossier etc...

    Existe t il un moyen de de faire en sorte que chaque instance du navigateur ait sa propre session?

    Merci d'avance.
    "Hou hou hou" fait le Hibou...

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Réponse courte: non

    Réponse moins courte: non, un session assigne un identifiant par navigateur, on ne peut donc pas avoir une sessions différente par instance (ou par tab), à moins d'utiliser un fenêtre de navigation privée. Si tu cherches sur Google, tu trouveras des tas de mauvaises solutions pour pallier à ce problème. Mauvaise car ils reposent tous sur le passage de l'identifiant de session dans l'URL, ce qui pose un sérieux problème de sécurité.

    Mais je sens que ton problème n'est pas les sessions, le problème vient du fait qu'en travaillant sur plusieurs dossiers à la fois, les informations vont dans le mauvais dossier. La solution serait sans doute d'assigner un identifiant unique à chaque dossier.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse, je fais donc une croix sur cette piste!

    Pour rebondir sur ta dernière remarque, pourrais tu préciser ce que tu entends par un identifiant unique?

    Dans les base de donnée, l'ID de mon dossier est unique, et je le véhicule dans une variable nommée $_SESSION['dossier_id'].
    Ce qu'il se passe :
    - lorsque j'ouvre mon premier explorateur je travaille sur le dossier 1, $_SESSION['dossier_id']=1,
    - si j'en ouvre un second, et que je travaille sur le dossier 2 , par exemple $_SESSION['dossier_id']=2,
    - si je reviens à mon premier et que je veux mettre à jour une information du dossier, l'appli va faire un UPDATE... WHERE dossier_id = 2...

    Petit à petit, je remplace mes $_SESSION par des $_GET lorsque c'est possible, mais j'ai certains cas où cela me semble impossible
    "Hou hou hou" fait le Hibou...

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Je ne connais pas le détail de tes dossiers, mais d'habitude on utilise des formulaires pour ce genre d'utilisation. À la création du formulaire, tu lui donnes un champ hidden dont la valeur est l'identifiant du dossier, et lorsque tu soumets le formulaire, le script de traitement regarde la valeur de l'identifiant, et enregistre/modifie les données qui correspondent à cet identifiant. Dans ce cas, tu garantis que l'UPDATE sera toujours effectué sur l'enregistrement du Dossier 1, jamais sur le Dossier 2.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    En fait, j'ai une page principale dans laquelle je fais un include d'un fichier creation.php ou modification.php selon le cas.
    Pour la création du dossier, je récupère l'ID dans ma variable de session une fois l'INSERT fait (et donc après validation du formulaire), et je charge automatiquement la page modification.php en utilisant ma variable de session pour charger le dossier qui va bien. Dans ce mode de fonctionnement, je pense que le post ne peut pas fonctionner, non?
    Je pense que la solution de mon problème se situe du côté d'AJAX...
    "Hou hou hou" fait le Hibou...

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Je n'ai pas vraiment compris ton explication, mais dans tous les cas tu peux utiliser Ajax (qui utilise également POST ou GET). Ajax signifie juste que le navigateur ne recharge pas en entier la page.

    En matière de "verbe" http, on utilise POST pour créér (et par extension pour modifier) une ressource, et GET pour récupérer/voir une ressource existante. Aussi bien la création que la modification doivent donc se faire par POST.

    Je ne voix pas pourquoi tu ne peux pas ajouter l'ID dans modification.php puisque tu le charge une fois la ressource créée... (le problème de conflit vient bien de modification.php, non?)

Discussions similaires

  1. [ZF 1.6] [Zend_Session] Session et plusieurs instances de navigateur
    Par cefabien dans le forum Autres composants
    Réponses: 3
    Dernier message: 24/01/2009, 19h56
  2. Réponses: 9
    Dernier message: 21/05/2007, 18h27
  3. 2 webapp, 2 sessions factory, 1 instance de jboss
    Par emilieax dans le forum Hibernate
    Réponses: 2
    Dernier message: 20/12/2006, 10h40
  4. [C++] DLL Multiples instances
    Par ouquoi dans le forum C++
    Réponses: 2
    Dernier message: 18/07/2006, 17h25
  5. [session] gestion d'une session par fenetre de navigateur
    Par devtele dans le forum Développement Web en Java
    Réponses: 9
    Dernier message: 14/12/2005, 11h20

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