PHP: управление доменом / субдоменом файлов cookie

Я работаю над сайтом с несколькими субдоменами, некоторые из которых должны получить свой собственный сеанс.

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

Если я просто сделаю:

session_start(); 

В итоге я получаю файлы cookie сеанса следующим образом:

subdomain.example.net

Однако, если я сделаю попытку самостоятельно установить домен cookie,

 ini_set('session.cookie_domain', 'subdomain.example.net'); 

или как

 session_set_cookie_params( 0, "/", "subdomain.example.net", false, false); 

Я получаю файл cookie для .subdomain.example.net (обратите внимание на открывающую точку), что, я считаю, означает «сопоставить все поддомены (или в этом случае субдомены).

Это похоже на все мои файлы cookie, а не только на сеанс. Если я сам установил домен cookie, у него автоматически будет точка, добавленная, что означает этот домен и все его дочерние элементы. Если я не устанавливаю домен, тогда он становится прав, используя только текущий домен.

Любая идея, что вызывает это, и что я могу сделать, чтобы контролировать эту добавочную точку?

Благодаря!

Solutions Collecting From Web of "PHP: управление доменом / субдоменом файлов cookie"

Функции cookie PHP автоматически префикс $ domain с точкой. Если вы не хотите этого поведения, вы можете использовать функцию заголовка . Например:

 header("Set-Cookie: cookiename=cookievalue; expires=Tue, 06-Jan-2009 23:39:49 GMT; path=/; domain=subdomain.example.net"); 

Если вы запустите свой PHP-скрипт в разделе « http://subdomain.example.net », не используйте параметр домена :

 setcookie('cookiename','cookievalue',time()+(3600*24),'/'); 

Вы получите файл cookie с «subdomain.example.net» (а не «.subdomain.example.net»)

Если вы прочитаете все RFC 6265, вы поймете, что единственный правильный способ иметь cookie только для хоста – НЕ устанавливать атрибут домена.

http://tools.ietf.org/html/rfc6265#section-5.4

Я понимаю, что это старый вопрос, но у меня была эта проблема, и ни один из ответов выше не сделал этого.

Я хотел установить cookie сессии для субдомена, но также включить httponly и secure.

Чтобы избежать лидерства. infront поддомена, Кевин и Столсвик правильны, не устанавливайте атрибут домена.

Чтобы сделать это и все еще иметь возможность установить httponly и безопасный режим, установите для домена значение NULL следующим образом:

 session_set_cookie_params(0, '/', NULL, TRUE, TRUE); 

Теперь у вас будет сеансовый файл cookie для определенного субдомена (без ведущего) с httponly и secure, установленным в true.

Это может помочь кому-то (я потратил несколько часов, чтобы понять это). После внесения изменений в исходные файлы и перед их тестированием закройте браузер, чтобы правильно уничтожить PHPSESSIONID во всех доменах и поддоменах.

Надеюсь, это сэкономит некоторое время!