PHP устанавливает по умолчанию cookie сессии для всех поддоменов? - PullRequest
1 голос
/ 21 сентября 2011

Интересно, как следует интерпретировать эту цитату из руководства по PHP :

session.cookie_domain указывает домен, который необходимо установить в файле cookie сеанса.По умолчанию вообще ничего нет, это означает имя хоста сервера, сгенерировавшего cookie в соответствии со спецификацией cookie.

Означает ли это, что при вызове session_start по URL-адресу www.somedomain.com/somepage.phpфайл cookie будет иметь следующую форму:

Set-Cookie  PHPSESSID=e48gh5mqggccgmn8172f0j5a06; path=/; domain=.somedomain.com

или

Set-Cookie  PHPSESSID=e48gh5mqggccgmn8172f0j5a06; path=/; domain=www.somedomain.com

Я видел на страницах индекса первый заголовок файла cookie, а на других страницах заголовок без домена.

Может кто-нибудь подсказать это?

Спасибо

Ответы [ 3 ]

3 голосов
/ 21 сентября 2011

Нет, php обычно устанавливает cookie для текущего домена, например: wwww.domain.com. Чтобы все было согласованно, вы должны либо перенаправить все запросы в один и тот же домен, либо явно установить cookie для всех поддоменов.

РЕДАКТИРОВАТЬ: на самом деле, это верно для Firefox. Я думаю, что PHP на самом деле не установит домен, поэтому браузер может свободно использовать все, что захочет. Internet Explorer, я думаю, установит его для любого субдомена

0 голосов
/ 21 сентября 2011

Нет PHP по умолчанию, никогда не устанавливайте cookie сессии для всех поддоменов.

Если вы хотите установить cookie для всех поддоменов, вы можете сделать это, используя этот код:

<?php
$currentCookieParams = session_get_cookie_params();

$rootDomain = '.example.com';

session_set_cookie_params(
    $currentCookieParams["lifetime"],
    $currentCookieParams["path"],
    $rootDomain,
    $currentCookieParams["secure"],
    $currentCookieParams["httponly"]
);

session_name('mysessionname');
session_start();

setcookie($cookieName, $cookieValue, time() + 3600, '/', $rootDomain);
?>

Для справки, пожалуйста, посетите http://www.php.net/manual/en/function.session-set-cookie-params.php

0 голосов
/ 21 сентября 2011

Он устанавливает cookie для домена, видимого в браузере клиента (так, вариант 2 в вашем вопросе). Если вы хотите установить cookie для всех поддоменов, вам следует вызвать session_set_cookie_params() и поставить ".domain.com" в параметре $domain.

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