Passer session d'un sous-domaine à l'autre ? - PHP - Programmation
Marsh Posté le 25-03-2006 à 15:52:55
non ce n'est pas possible, la session est définie pour une sous domaine.
c'est justement l'avantage, c'est qu'une session sur le site principale
www.site.com ne se retrouve pas sur le site demo.site.com par exemple
Cdt
Marsh Posté le 25-03-2006 à 15:56:58
oulà, ça dépends de l architecture réseau...
si ça se passe sur un même serveur, un petit tour sur la doc php de session t aidera à trouver les bonnes options ini_set().
sinon, il te reste deux possibilités:
- facile mais un peu dégeu: faire passer un sérialize des variables de sessions d un domain à l autre,
- plus clean: une base de donnée commune pour stocker les variables de sessions
Marsh Posté le 25-03-2006 à 15:59:30
c'est complétement à déconseiller. un sous domaine être indépendant.
Marsh Posté le 25-03-2006 à 16:03:47
non, pas forcément. si l internaute tient à consulter ses mails sur mail.dom.com puis revenir au forum sur forum.dom.com, en passant par wiki.dom.com, il est tout à fait utile de garder les même paramètres de session, mais de séparer en sous domaines.
Autre solution plus simple pour réseau interne:
ini_set(session.save_path...) permet de définir un chemin d accès aux fichiers de session, en partageant ce dossier en réseau à l aide de NFS ou SAMBA tu peut partager les sessions entre serveurs.
Marsh Posté le 25-03-2006 à 16:05:47
> un sous domaine être indépendant.
sûrement pas pour le load balancing...
Marsh Posté le 25-03-2006 à 18:36:21
Citation : si ça se passe sur un même serveur, un petit tour sur la doc php de session t aidera à trouver les bonnes options ini_set() |
Les 3 sites sont sur le même serveur. Mais je ne comprends pas ce que permet exactement cette fonction.
Citation : faire passer un sérialize des variables de sessions d un domain à l autre, |
Peux tu être plus précis stp. Me montrer un exemple ?
Citation : une base de donnée commune pour stocker les variables de sessions |
Ok, mais comment rendre valide une session à partir d'un autre sous domaine ?
Merci pour vos réponses
PS : ca ne serait pas plus simple avec des cookies ?
Marsh Posté le 25-03-2006 à 18:57:37
> PS : ca ne serait pas plus simple avec des cookies ?
Les sessions utilisent déjà des cookie...
Ok, pour exemple, puisque c est sur le même serveur, tu peut sans problème réserver un dossier spécial pour que PHP y stocke les variables de session.
config_session.inc:
Code :
|
page.php:
Code :
|
Par contre tu n a plus la génération automatique de n° de session, tu doit le faire à chaque lien en utilisant ``mysid``.
Marsh Posté le 27-03-2006 à 11:23:49
Salut !
Ca marche... presque parfaitement.
Je récupère bien mon id de session sur les 3 sites.
Mais est-ce normal que je ne récupère pas les variables passés en sessions sur les 3 sites ?
Par exemple si je fais : $_SESSION['test'] = 'Ca marche !'; sur un des sites, je n'arrive pas à récupérer $_SESSION['test'] sur les autres.
PS : peux-être faut-il simplement enregistrer l'id de session dans une table et vérifier à chaque fois...
Marsh Posté le 27-03-2006 à 11:52:43
Normalement si tu mets:
ini_set("session.save_path","/web/secure/phpsessions/" );
sur tous les serveurs, ils enregistrent les cookies au même endroit:
/web/secure/phpsessions/
tu doit inclure le fichire config_session.inc ci dessus (ou un equivalent) sur absolument toutes tes pages de tout tes serveurs..
Marsh Posté le 27-03-2006 à 12:04:05
nargy a écrit : |
C curieux ca ne fonctionne pas, je ne peux pas récupérer les variables précédemment enregistrées
Marsh Posté le 27-03-2006 à 12:10:31
ReplyMarsh Posté le 27-03-2006 à 12:13:32
nargy a écrit : regarde dans le répertoire: |
J'ai bien mes fichiers des sessions ca pas de pb.
Mais lors de l'appel d'une variable précédement enregistrée sur un autre sous domaine il n'y a rien.
Marsh Posté le 27-03-2006 à 12:14:00
s il y a rien dedans essaye de mettre le ini_set directement dans ton php.ini
Marsh Posté le 27-03-2006 à 12:15:47
> Mais lors de l'appel d'une variable précédement enregistrée sur un autre sous domaine il n'y a rien.
tu as bien passé le sid de la session? et restauré avec sessionid($sid)?
Marsh Posté le 27-03-2006 à 12:19:22
sinon il te reste cette solution:
http://fr2.php.net/manual/en/funct [...] andler.php
il y a des exemples avec une base de donnée à la fin de la page, dans les commentaires des utilisateurs...
Marsh Posté le 27-03-2006 à 12:49:11
Je suis con...
ca une erreur de ma part.
Au fait il faut faire :
Citation : if(isset($mysid)) |
Et ca fonctionne (ajouter le session_start()).
Merci beaucoup pour ton aide.
Marsh Posté le 27-03-2006 à 13:16:58
mazou,
as-tu tout simplement essaye de mettre cette directive dans ton php.ini (marche aussi avec un .htaccess ou ini_set()) :
session.cookie_domain = "domaine.fr"
Theoriquement ca doit te permettre de maintenir une session sur plusieurs sous-domaines...
Marsh Posté le 27-03-2006 à 13:19:35
Woutcha a écrit : mazou, |
En effet c super simple.
et ca fonctionne très bien !
Merci beaucoup !
Marsh Posté le 25-03-2006 à 15:14:38
Bonjour,
J'ai 3 sites :
http://www.sousdomaine1.domaine.fr
http://www.sousdomaine2.domaine.fr
http://www.sousdomaine3.domaine.fr
Il n'y a donc que les sous-domaines qui diffèrent.
Je souhaite, quand j'ouvre une session à partir d'un de ces sites, qu'elle soit ouverte et valide sur les autres.
Est-ce possible ? Et si oui comment ? Car pour l'instant je n'y arrive pas.
Merci pour vos réponses, même négatives.