2010-05-27 6 views
4

J'ai deux domaines. Un domaine contient le script de connexion. Il crée un cookie lors de la connexion. Un autre domaine possède un raccourci d'URL.PHP lire un cookie qui est sur un autre domaine

Ainsi, au 2ème domaine qui ont le script URL Shortener un fichier appelé session.php. Habituellement, j'utilisais $_COOKIE['sessionid'] pour obtenir l'identifiant de session et le faire correspondre à l'aide de la base de données.

Comment puis-je obtenir l'identifiant de session maintenant? J'ai essayé peu de moyens mais aucun d'eux n'a résolu mon problème.

Répondre

12

Pour des raisons évidentes de sécurité, vous ne pouvez pas lire un cookie qui appartient à un autre domaine. Vous pouvez le faire à travers les sous-domaines cependant.

Pourquoi ne pas accole l'identifiant de session à l'URL transmise?

+0

Que voulez-vous dire par 'l'ajouter à l'URL'? – pnm123

+1

@ pnm123: dans le cadre de la chaîne de requête: 'http: //monsite.com/page.php? Sid = A12638BCEF2733' –

+0

Est-il nécessaire de vérifier l'identifiant de session par rapport à une base de données dans la deuxième application? Ne suffit-il pas de vérifier l'existence d'un jeton (créé lors de la connexion réussie, détruit lors de la déconnexion) stocké dans le cookie de la première application? –

3

Cookies sont envoyés par le navigateur et seulement dans le domaine, les biscuits ont été fixés pour.

Il n'y a pas beaucoup (ce qui signifie rien;)) que vous pouvez faire. Toutefois, si vos domaines sont deux sous-domaines différents (par exemple, login.yourdomain.com et shortener.yourdomain.com), il vous suffit de définir le nom de domaine en conséquence pour que le cookie soit valide pour tous les sous-domaines. Dans ce cas, il s'agit de .yourdomain.com.

Vous pouvez lire la documentation de setcookie().


Peut-être que c'est mieux si vous décrivez clairement ce que vous voulez accomplir. Il y a probablement une autre solution qui n'implique pas de cookies.

+0

Il n'y a aucun moyen de le rappeler. Comme ajouter un fichier sur le 1er domaine et l'appeler du 2ème domaine? – pnm123

+0

@ pnm123: Que voulez-vous dire par * ajouter un fichier *? –

+0

"Pas beaucoup" n'est pas rien. ;-) – Gumbo

0

Vous ne pouvez pas lire un cookie de l'autre domaine.
bien qu'il existe plusieurs façons de transmettre un identifiant de session. Vous pouvez rechercher SO pour le cross-domain authorization

La façon la plus simple est de passer un identifiant de session via la chaîne de requête

0

Vous ne pouvez pas. Les cookies sont liés à un seul domaine. Cependant, vous pouvez utiliser des cookies sur plusieurs sous-domaines.

1

Juste lors de la configuration cookie à partir la page de connexion mis le cookie au domaine entier comme ce

setcookie("c","value",time()*3600*24,"/"); 

de cette façon vous pouvez définir cookie à votre domaine.

Questions connexes