Blog

Blog

Passer des sessions d'un sous-domaine à l'autre

Lundi 04 novembre 2013
Après avoir longtemps galéré à passer des sessions d'un sous-domaine à l'autre en PHP, j'ai enfin trouvé la réponse ! En principe, il suffit de mettre :

session_name('session');
session_set_cookie_params(0, '/', '.domaine.tld');

avant le

session_start();

Néanmoins, si vous avez installé Suhosin, une extension PHP permettant de sécuriser votre serveur, des problèmes peuvent se poser. En effet, si les variables "suhosin.session.cryptua" et "suhosin.session.cryptdocroot" sont à "on", le passage de sessions entre sous-domaines n'est pas possible. Il faut donc trouver le fichier suhosin.ini utilisé par votre configuration PHP et y mettre ces deux valeurs à "off". Si vous ne trouvez pas ce fichier mais êtes sûr que Suhosin est installé ( il suffit de vérifier avec un phpinfo() ), ajoutez les deux lignes suivantes à votre php.ini :

suhosin.session.cryptua = Off
suhosin.session.cryptdocroot = Off

Il ne reste ensuite plus qu'à recharger la configuration apache. Par exemple sur une distribution basée sur debian :

service apache2 reload

Et voilà, vous pouvez passer d'un sous-domaine à l'autre sans perdre vos sessions !