Как не терять сессию?

Focus

Новичок
Как не терять сессию?

При переходе с домена на поддомен теряется сессия.. Подскажите как ее не терять.. Нужно чтобы она сохранялась..

На поддомене пишу:

PHP:
session_set_cookie_params(0, '/', '.site.com');
но сессия все-равно теряется
 

Gas

может по одной?
На поддомене пишу
это надо писать и на поддомене, и на главном домене.
правда сам использую ini_set("session.cookie_domain", ".site.com"); но суть одна и та-же.
 

Focus

Новичок
что-то все-равно теряется сессия.. Пробовал и Вашим способом тоже.. Может это в настройках сервера или пхп еще нужно что-то поменять? А то это случилось после переезда на новый хостинг. Раньше все было ок..
 

Gas

может по одной?
Посмотри firebug'ом одинаковый ли проставляется домен (.domain.com) у сессионной куки на домене и поддомене. Для чистоты эксперимента потри все кукисы в броузере и заодно проверь чтоб session.use_cookies было true
 

korpus

злой бобёр
Re: Как не терять сессию?

Автор оригинала: Focus
PHP:
session_set_cookie_params(0, '/', '.site.com');
такие параметры можно ставить, если открывается страница на http://site.com. Если будет http://www.site.com, а кука ставится на .site.com (на весь домен site.com и все поддомены этого сайта), то браузер отвергнет эту куку.
 

Вурдалак

Продвинутый новичок
korpus, ничего подобного.

-~{}~ 16.10.10 16:07:

Пара вопросов к тем, кто в теме.


Cookies описывает RFC 2109, насколько я понимаю.
Hosts names can be specified either as an IP address or a FQHN
string. Sometimes we compare one host name with another. Host A's
name domain-matches host B's if

* both host names are IP addresses and their host name strings match
exactly; or

* both host names are FQDN strings and their host name strings match
exactly; or

* A is a FQDN string and has the form NB, where N is a non-empty name
string, B has the form .B', and B' is a FQDN string. (So, x.y.com
domain-matches .y.com but not y.com.)
Домен "www.example.com" (N == "www") совпадает с ".example.com" согласно 3-му пункту.
Домен "example.com" НЕ совпадает (?) с ".example.com".

4.3.2 Rejecting Cookies

To prevent possible security or privacy violations, a user agent
rejects a cookie (shall not store its information) if any of the
following is true:

* The value for the Path attribute is not a prefix of the request-
URI.

* The value for the Domain attribute contains no embedded dots or
does not start with a dot.

* The value for the request-host does not domain-match the Domain
attribute.

* The request-host is a FQDN (not IP address) and has the form HD,
where D is the value of the Domain attribute, and H is a string
that contains one or more dots.

Examples:

* A Set-Cookie from request-host y.x.foo.com for Domain=.foo.com
would be rejected, because H is y.x and contains a dot.
2-й пункт, как я понимаю, запрещает домены типа "localhost", "com", ".com", "com.", т.к. там нет _внутри_ точек. Правильно я понимаю «embedded dots»?

4-й пункт говорит, что cookie с домена "y.x.foo.com" с domain-value ".foo.com" должна быть отклонена, но не сказано, что запрещено ставить такую cookie с домена "x.foo.com". А 3-й пункт запрещает ставить cookie с "foo.com" с domain-value ".foo.com"?!

-~{}~ 16.10.10 16:08:

Тесты в Firefox 3.x и Google Chrome последнее не подтверждают.
 

korpus

злой бобёр
Вурдалак, я лично всё проверял и куки устанавливаются именно так, как я написал.
Взято отсюда http://php.net/manual/en/function.setcookie.php
Код:
The domain that the cookie is available to. To make the cookie available on all subdomains of example.com (including example.com itself) then you'd set it to '.example.com'. Although some browsers will accept cookies without the initial ., » RFC 2109 requires it to be included. Setting the domain to 'www.example.com' or '.www.example.com' will make the cookie only available in the www subdomain.
-~{}~ 17.10.10 04:20:

С той лишь разницей, если страница находится на www.site.com, то мождно установить только такие куки: .www.site.com, www.site.com, но никак не .site.com или site.com или www2.site.com
 

Вурдалак

Продвинутый новичок
korpus, тесты на Firefox, Google Chrome показывают обратное, приведённая цитата никак твои слова не подтверждает: там просто НЕТ того, что ты утверждаешь — к чему ты её привел?
 

Gas

может по одной?
korpus
не нужно вводить в заблуждение, кука .domain.com ставится/читается и на www.domain.com, и на www.sub2.sub1.domain.com. Не играет роли какие сабдомены стоят слева от точки.
 

Вурдалак

Продвинутый новичок
Автор оригинала: Gas
Не играет роли какие сабдомены стоят слева от точки.
— а это значит, что все плевать хотели на
4.3.2 Rejecting Cookies
To prevent possible security or privacy violations, a user agent
rejects a cookie (shall not store its information) if any of the
following is true:

...

* The request-host is a FQDN (not IP address) and has the form HD,
where D is the value of the Domain attribute, and H is a string
that contains one or more dots.

Examples:

* A Set-Cookie from request-host y.x.foo.com for Domain=.foo.com
would be rejected, because H is y.x and contains a dot.
 
Сверху