Autoriser les sessions php pour mener à sous-domaines
- Je utiliser les sessions php (pas les cookies, sauf pour le cookie de session) pour toutes les données d'utilisateur, et lorsqu'un utilisateur accède à son profil user.mydomain.com ils sont immédiatement "déconnecté" jusque-là, supprimer le sous-domaine.
Est-il un moyen d'accepter les sessions de tous les domaines, tant que sa *.mydomain.com
- Tout d'abord,
ini_set('session.cookie_domain', '.example.com')
, puissession_start()
ouSession::start()
à partir de github.com/delight-im/PHP-Cookie
Vous devez vous connecter pour publier un commentaire.
Voici les 4 options.
De le placer dans votre php.ini:
Ou dans votre .htaccess:
Ou que la première chose dans votre script:
Ou dans votre php-fpm piscine de configuration pour votre site:
php -i | grep -i 'Suhosin'
pour voir si il y estsession_set_cookie_params(0, '/', 'example.com', false, false);
ini_set('session.cookie_domain', '.example.com');
vient avantsession_start();
de sécurité, être damné, si vous n'êtes frustré avec incomplètes ou de mauvaises réponses, comme je le suis, c'est votre sauveur. Il fonctionne, tout simplement.
changer le nom de la session au dessus de la base de fonctions de fichier
comme
ensuite utiliser le code suivant dans la page php
enfin la modification de la valeur par défaut nom de la session du sous-domaine et de supprimer le cookie par défaut dans le sous-domaine des fonctions de base d'un fichier
comme:
si vous continuez à utiliser votre nom de cookie comme PHPSESSID ,il suffit de retirer toutes les fonctions avec
vérifiez ensuite que votre navigateur les cookies existants, seulement de supprimer tous les cookies du domaine et sous-domaine, et répétez le processus.
Je sais que c'est assez vieux, mais à élargir davantage sur @CTT suggestion de l' - je besoin d'ajouter un php.fichier ini dans chaque sous-répertoire (qui va exécuter le code php et nécessite la session) de mon sous-domaine avec le texte suivant:
J'espère que cette aide (il m'a fallu les âges pour comprendre cela).
Une autre option qui a fonctionné pour moi: est de forcer le nom de la session:
oui.
ini_set
est de travail. mais n'oubliez pas de détruire tous les caches et les cookies du navigateur pour voir s'il fonctionne.dans votre
xxx.example.com
etyyy.example.com
, vos fichiers php devrait commencer comme ça.J'ai juste eu ce problème et il s'avère que j'ai été en utilisant différentes de php.fichiers ini pour les deux sous-domaines. Ces fichiers ini a indiqué les différents session.save_path variables. Pour des raisons évidentes, ce doit être la même pour tous les sous-domaines qui ont besoin de partager des séances de.
Essayez Ceci:
enregistrés l'utilisateur. Lorsque l'utilisateur va passer à d'autres sous-domaine envoyé l'id de session dans l'URL comme ceci
user.mydomain.com/?id=$sessionId
Maintenant, l'utilisateur va obtenir toutes les valeurs de session et de rester connecté.
C'est une bonne solution, mais vous ne pouvez pas l'utiliser dans toutes les situations. Pour les exemples, il ne fonctionnera pas si vous ne pouvez pas compter sur les pas de cookies de session.
Cela DOIT fonctionner si vous l'utilisez correctement.
Par exemple, vous devez le placer avant
session_start()
et aussi dans tous les fichiers d'appelsession_start()