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 :

Un petit casse-tête de sessions


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut Un petit casse-tête de sessions
    Bonjour,

    Pour harmoniser les sessions de plusieurs applications différentes, j'aurais besoin de passer le SID d'une session en tant que variable dans la session d'une autre application puis que cette autre application ausa besoin de ce SID pour manipuler l'autre session.

    Pour m'assurer de ne pas être embêté par toutes sortes de mesures pour empêcher les pop-up, je désire donc placer dans ma page un frame qui contiendrait un fichier recevant en $_GET mon SID.

    Est-il possible de gérer ainsi deux sessions bien distinctes séparées par un simple frame? Y a-t-il un moyen que je n'aurais pas envisagé qui m'éviterait tout ce casse-tête?

  2. #2
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    Citation Envoyé par FrankOVD
    Y a-t-il un moyen que je n'aurais pas envisagé qui m'éviterait tout ce casse-tête?
    c'est possible en effet.
    As-tu essayé ceci : ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_name('unNom');
    session_start();
    en utilisant le même nom de session pour les deux applis ?
    Les deux applis doivent évidamment être hébergées sur le même serveur sans quoi il est impossible de partager une session par quelque moyen que ce soit.

    PS : dis-moi si ça marche s.t.p.

  3. #3
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Salut

    Il y a une chose relativement simple à faire, c'est de créer une table qui contiendrait tes différentes variables, associées à l'id de session, et au préalable enregistrées.

    Simple exemple de table (table_session):
    id_session
    nom
    prenom
    mail
    etc...

    Ensuite tu peux récupérer une session différente de celle en cours, voire même en récupérer plusieurs dans des templates distincts.

    Ceci en faisant une requête simple :

    $
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    results = mysql_query("SELECT * FROM table_session WHERE mail='$mail'");
    ou
    $results = mysql_query("SELECT * FROM table_session WHERE nom='$nom'");
    Mais peut importe la clause WHERE, l'intérêt est de récupérer le $session_id et par voie de conséquence les variables associées.

  4. #4
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    La situation exacte est que je dois regrouper deux applications Squirrelmail et un Forum PhpBB. Lorsqu'un utilisateur s'authentifie dans un des deux squirrelmail, il est dirigé vers un portail qui enrichi la session d'informations pertinentes en rapport avec l'utilisateur. Un lien dans ce plugin permet par exemple de sauter sur le Forum PhpBB (Un fichier .php entre les deux applications simule le login et "bypass" cette étape). Une fois l'information de login donnée au forum PhpBB, je change de serveur car le forum est effectivement sur un autre serveur.

    J'ai noté que la déconnection du forum se fait en passant deux valeurs en GET au fichier login.php (logout=true et le SID). Mon but est alors que ma session dans squirrelmail contienne le SID de la session du Forum pour qu'éventuellement le fichier signout de Squirrelmail puisse appeler la fermeture de la session du Forum.

    Précidément, j'avais pensé que je pourrais procéder de la façon suivante:

    • Lorsque le plugin Squirrelmail est ouvert, le fichier login.php dans le répertoire du plugin ajoute à la session de Squirrelmail les valeurs de session nécessaires au fonctionnement du plugin.

    • Lorsque l’usager clique sur le lien menant au forum, le fichier redirect.php toujours inclus dans le portail puise dans la base de données les informations d’authentification de l’usager et passe directement au fichier de validation des identités du forum en simulant que le formulaire a été rempli.

    • Lorsque le fichier d’authentification s’exécute, il crée une session propre au forum, récupère l’identifiant hexadécimal de cette session et le renvoie vers le portail pour qu’il soit inscrit en tant que valeur de session dans Squirrelmail.

    • Si l’utilisateur ferme sa session sur le portail, le fichier signout.php de Squirrelmail appelle le fichier d’authentification du forum en lui indiquant de fermer la session dont il a noté l’identifiant.

  5. #5
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Alors si sur le serveur de mon Forum je charge une page quelconque qui contient la session du Forum et que dans cette page j'inclut dans mon Frame (http://autreserveur/mapage.php?sid=M0NS1D) est-ce que je pourrais ainsi réussir à ouvrir la session de mon Squirrelmail et y inscrire mon SID?

  6. #6
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Citation Envoyé par FrankOVD
    Alors si sur le serveur de mon Forum je charge une page quelconque qui contient la session du Forum et que dans cette page j'inclut dans mon Frame (http://autreserveur/mapage.php?sid=M0NS1D) est-ce que je pourrais ainsi réussir à ouvrir la session de mon Squirrelmail et y inscrire mon SID?
    Ok, je ferais plutôt de cette façon :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    http://autreserveur/mapage.php?".session_name()."=".session_id());
    Bref, et c'est là justement l'intérêt de stocker auparavant les différentes sessions dans une table (avec les variables utiles à l'utilisateur).
    Dans ta page appelée (mapage.php), il convient d'effectuer une requête pour collecter tous les éléments utiles puisque tu disposes désormais de l'id de session.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .....SELECT * FROM table_session WHERE id_session='$session_id'");
    //...........
    Ensuite, celà nécessite évidemment à relancer un session_start () et les register des différentes variables dans les nouveaux fichiers de traitement.

    Ensuite, rien ne t'empêche de faire un delete de cette session au moment de la déconnexion de l'utilisateur, afin d'éviter de surcharger la table.
    Enfin bon, c'est une idée, je l'ai déjà réalisé notemment pour un outil partagé.

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

Discussions similaires

  1. (Très)petit casse tête
    Par alcibiade dans le forum Lisp
    Réponses: 4
    Dernier message: 18/06/2011, 19h13
  2. [PHP 5.2] Petit casse-tête pour les amateurs de tableaux
    Par renaud26 dans le forum Langage
    Réponses: 8
    Dernier message: 07/02/2011, 15h25
  3. Petit casse tête - cp /php
    Par christophev85 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/04/2009, 17h25
  4. Réponses: 1
    Dernier message: 10/03/2009, 17h05
  5. Réponses: 20
    Dernier message: 02/02/2008, 22h14

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