Настройка cookie для субдомена с php не будет работать - PullRequest
1 голос
/ 31 января 2012

Я пытаюсь установить файл cookie с сайта "example.com", чтобы он был доступен только для сайта "site.example.com". Проблема в том, что по какой-то причине это не работает. Например, приведенный ниже код работает правильно:

setcookie('my_var', "hello", time()+3600, "/", 'example.com');

То есть при запуске с сайта example.com я вижу файл cookie my_var с сайта site.example.com. Тем не менее, код ниже не устанавливает cookie:

setcookie('my_var', "hello", time()+3600, "/", 'site.example.com');

(если я добавляю точку, например, ".site.example.com"), то и нет.

Использование php 5.3.8 и хрома

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Как отметил Гамбо в своем комментарии, вы не можете установить cookie для субдомена, только для того же или супердомена, см. Набор файлов cookie для субдомена

0 голосов
/ 27 июня 2018

В моем случае я пытался установить cookie из sd1.example.com для работы на example.com, www.example.com, sd2.example.com и т. Д.

Я попытался изменить некоторые настройки в php.ini, явно перечислив все поддомены, но ни один не помог. Я понял, что только корневой домен может устанавливать файлы cookie для других поддоменов, а один поддомен не может устанавливать файлы cookie для другого.

Итак, я создал скрипт setcookie.php в корневом домене, т.е. example.com

sd1.example.com отправляет GET-запрос этому сценарию:

header("Location: //example.com/setcookie.php?value=" . $xxxxx);

А в setcookie.php

setcookie("xxxxx", $_GET['value'], 0, "/", ".example.com");

Таким образом, файл cookie доступен по умолчанию из всех поддоменов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...