Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2006, 16h36   #1
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
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?
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 17h45   #2
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
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 :
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.
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 17h59   #3
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
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 :
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.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 19h36   #4
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
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.
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 21h45   #5
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à 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?
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 22h17   #6
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
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 :
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 :
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é.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 22h52   #7
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Hmm, je me demande pourquoi il faudrait faire tout ça? Tout ce dont j'ai besoin moi c'est le SID. Le reste m'importe peu j'ai tout ce dont j'ai besoin. Aussi je trouve bizare de stocker des données éphémères telles des variables de session dans une base de données.
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 23h28   #8
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Tu peux le récupérer de cette façon :
Code :
1
2
3
4
5
6
7
8
 
 
<?php
session_start();
$session_id = session_id();
// verif
echo $session_id ;
?>
Pour répondre à ta dernière interrogation, ce ne sont pas des données éphéméres, mais grandement utiles.
Il est courant d'entendre parler des agendas partagés (par exemple), et bien ils fonctionnent sur ce principe même.
Je conçois cependant que ce n'est pas une méthode obligatoire mais elle peut rendre "service" selon l'application.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 00h08   #9
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
En y réfléchissant, tu ne pourras passer que l'id de session dans ton url, et forcemment sans probléme. Mais celà ne servira à rien, tout du moins il ne sera pas exploitable et pour cause :

Exemple :

Code :
1
2
3
4
5
6
7
8
9
10
 
 
<?php
session_start();
$name="Dupond";
session_register("name");  
$session_id = session_id();
 
print("<a href='http://www.ton_autre_site.com/tapage.php?session_id=$session_id'>lien</a>");
?>
Sur ton autre site, tapage.php n'affichera que l'id de session et non pas $name, qui pourtant est associé à cette session.

Le choix du titre de ce post était pertinent.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2006, 22h40   #10
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Fichier de la session à récupérer :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?
session_name("phpbb");
session_start();
$_SESSION["test"] = "Forum";
?>
<html>
  <body bgcolor="#BAD8AE">
<?
echo(session_id()."<br>");
?>
    <iframe src="http://autreserveur/mapage.php?sid=<?=session_id()?>" width="0" height="0" frameborder="0"></iframe><br>
<?
echo(session_id()."<br>");
echo($_SESSION["test"]);
?>
  </body>
</html>
Fichier de la session maîtresse appelée dans le iFrame

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<html><body bgcolor="#00FF0F">
<?
session_name("sqmail");
session_start();
echo(session_id()."<br>");
echo($_GET["sid"]."<br>");
$_SESSION["sq"] = $_GET["sid"];
$_SESSION["test"] = "Squirrelmail";
echo($_SESSION["sq"]."<br>");
echo($_SESSION["test"]."<br>");
?>
</body></html>
Ça fonctionne bien, rien ne se mêle. Puisque ce test est concluent, je suppose que je pourrai utiliser le même principe!
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2006, 23h25   #11
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
re,

Je te le souhaite car j'ai fait également des tests de mon côté.
Mais différemment car pas utilisé la méthode iframe mais passé l'id en get (ou post en hidden) d'un site sur un autre.
Et en effet, je récupérais l'id mais pas les $variables associées.
Mais franchement, c'est étrange !
Qui dit autre serveur dit autre tableau de variable globale. C'est là où je pige pas par quel miracle ta procédure peut récupérer les différentes variables.
hum....c'est creusant ce truc là !
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 14h59   #12
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Je suis allé m'amuser un peu dans le code du forum et je vois que c'est probablement carrément impossible de faire comme ça, et je me demande bien si ça pourrait même être possible à partir d'un même serveur. Existe-t-il un moyen d'aller piger dans les variables d'une autre application lorsque ces deux applications sont sur le même serveur?
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 15h15   #13
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Salut

Je me disais bien........

Citation:
Envoyé par alain31tl
Mais franchement, c'est étrange !
Qui dit autre serveur dit autre tableau de variable globale. C'est là où je pige pas par quel miracle ta procédure peut récupérer les différentes variables.
Citation:
Envoyé par FrankOVD
Existe-t-il un moyen d'aller piger dans les variables d'une autre application lorsque ces deux applications sont sur le même serveur?
Absolument, et c’était l’objet de ma toute première réponse.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2006, 15h32   #14
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Pardon de revenir à la charge, mais as-tu essayé la solution que j'ai proposé plus haut ?
Parce-que moi je viens de tester, et si les deux applis sont sur le même serveur, ça marche très bien ...
Par contre, si les applis sont sur des serveur différents, ça ne peut pas marcher.
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 21h07   #15
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Ouais merci j'ai une assez bonne compréhension de comment passer et récupérer des valeurs, que ce soit sur le même serveur ou sur deux serveurs distants. Le problème maintenant c'est une limitation des possibilités dans ma 2e application. Je crois avoir trouvé une solution alors tout devrait être Okay même sur 2 serveurs distincts.
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 21h25   #16
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
$_get !!
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 21h52   #17
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 408
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 408
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
Je redonne des news dès que c'est terminé
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 22h23   #18
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Citation:
Envoyé par FrankOVD
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.
Ce n'était pas l'objet de ta première question.
Passer des variables d'un site à l'autre, celà n'a jamais été le bout du monde, que ce soit en get ou post mais exploiter un ID de session sur un serveur tiers, c'est une autre paire de manches, voire impossible, et c'est ce qu'on s'évertuait à souligner ( en rapport avec ta question d'origine) .
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 23h28   #19
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
A partir du moment ou les appli sont sur le même serveur il n'y a rien d'autre à faire que la procédure habituelle normalement... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 23h40   #20
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Citation:
Envoyé par kankrelune
A partir du moment ou les appli sont sur le même serveur il n'y a rien d'autre à faire que la procédure habituelle normalement... .. .

Ben si tu lis depuis le début, tu verras que ce n'est pas le cas.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h16.


 
 
 
 
Partenaires

Hébergement Web