Авторизация пользователя на нескольких доменах одновременно - как реализовать?

Линк

Guest
никакой(( я сказал глупость!! не слушайте меня)) но в остальном вроде бы неошибся))

ЗЫ единственный способ узнать про куки - JS
из http заголовков и правда никак не узнать
 

Фанат

oncle terrible
Команда форума
shambler, скажи пожалуйста, работают ли на сервере сессии так, как им положено?

Без передачи с одного на другой, просто на одном домене.
Вот зашел ты на него не со второго.
при включенных куках на клиенте сид в урле виден?
 

shambler

Новичок
Линк
теперь объясни популярно - КАК ты это проверил?
Поставил сниффер. В момент перехода с одного сайта на другой с сервера кука не приходит, хотя раньше я думал иначе (2Фанат - сорри, действительно обманывал).

шлет ли клиент ему cookies: ?
В момент перехода (когда пользователь кликает по ссылке) - нет.

шлет ли он ему что то гетом?
Да. Гетом он шлет PHPSESSID

Фанат

Я одного не пойму, ты кому голову морочишь - себе иил мне?
Сорри, Фанат, кука приходила, но она не содержала PHPSESSID. Единственное значение в ней было - site. Не знаю, откуда оно взялось. Еще раз - сессионная кука действительно не приходит.

скажи пожалуйста, работают ли на сервере сессии так, как им положено?
Да. В пределах одного сайта сессии работают. Есть одно небольшое НО - оказывается, транс-сид к ссылкам не добавляется в любом случае (даже если он включен).

при включенных куках на клиенте сид в урле виден?
Нет. Не виден. Сид в урл не добавляется.

-~{}~ 12.02.04 12:13:

Могу добавить, что проводил те же эксперименты на сервере разработки. Во время перехода сервер получает ГЕТ-ом PHPSESSID и корректно выставляет сессионную куку. На хостинге этого не происходит (выставления куки после получения PHPSESSID).
 

zmeigorin

Guest
Разрешите влезть? =)
не знаю в точности, как пхп ведёт себя с SID'ами, но про куки наверняка знаю следующее:
если в них проставлен домен domain1.com, то броузер будет слать их на domain1.com www.domain1.com sub.domain1.com, но НЕ на domain2.com и т п. это объясняет работоспособность всей системы на тестовом сервере.

Теперь по поводу сида в урл. Не наю, как поступает PHP, но "из общих соображений", он будет проставлять сиды только на урлы, ссылающиеся на domain1.com. Также, гипотетически возможно, чтобы ПХП игнорировал СИД, полученный в УРЛе при условии, что Referrer - другой сервер.
 

Фанат

oncle terrible
Команда форума
zmeigorin
на тестовом сервере были разные домены, а куки тут вообще не при чем.
 

zmeigorin

Guest
Фанат
не скажите,
В процессе разработки все выглядело так:
1. Домены site1.domain.com, site2.domain.com.
2. На сайте site1.domain.com была ссылка типа site2.domain.com?PHPSESSID=... , в которой передавался ид сессии.
Во-первых, PHP мог ставить куку на domain.com
во-вторых, см. мой второй абзац, он мог "подумать", что эта ссылка внутренняя... хотя кто его знает =) или может какие-то особенности поведения конкретных версий пыха...

*едит*

а может дело в bug_compat_42? =)
 

Фанат

oncle terrible
Команда форума
session.cookie_domain no value
это раз.
он ни разу не упоминал что куки настроены на домен.
второе.
все это прекрасно должно работать и без кук с доменами.

а может дело в bug_compat_42? =)
а может быть - в зеленых человечках?
поттрудись или высказывать осмысленные догадки, или не высказывать вовсе.
 

laco2m

Guest
Проблема была один в один. Дело в различных версиях PHP и их способах работы с сессионными куками. Вот мое заключение по этому вопросу:

Начиная с версии 4.3.3 Set-Cookie передается с каждым session-start() (при use_cookies = 1, естественно). Рассмотрим подробнее, что происходит, когда session id приходит через cookie и/или через get и как влияет установка use_trans_sid.

1. Session id приходит через cookie
- Php 4.3.3: принимает session id, отправляет Set-Cookie
- Php < 4.3.3: принимает session id, не отправляет Set-Cookie
2. Session id приходит через get (cookie не приходит, use_trans_sid = 0)
- Php 4.3.3: принимает session id, отправляет Set-Cookie
- Php < 4.3.3: принимает session id, не отправляет Set-Cookie (т.е. если не поддерживать Session id в URL, при следующем запросе старая сессия теряется)
3. Session id приходит через get (cookie не приходит, use_trans_sid = 1)
- Php 4.3.3: принимает session id, отправляет Set-Cookie, добавляет SID ко всем URL
- Php < 4.3.3: принимает session id, не отправляет Set-Cookie, добавляет SID ко всем URL
4. Session id приходит и через get и через cookie (use_trans_sid = 1)
- Php 4.3.3: принимает session id, отправляет Set-Cookie, не добавляет SID ко всем URL. Таким образом, сессия инициализируемая session id через get, полностью переходит в cookie на втором запросе.
- Php < 4.3.3: принимает session id, не отправляет Set-Cookie, не добавляет SID ко всем URL. Однако, этот случай будем считать невозможным, в смысле того, что сессия инициализируемая session id через get при включенном use_trans_sid не перейдет в cookie.
5. Session id приходит и через get и через cookie (use_trans_sid = 0)
- Приоритет у cookie, см. пункт 1.

При включенном use_only_cookies Php 4.3.3 продолжает посылать Set-Cookie при каждом session_start().

*Смущает только, что в Changelog'ах ничего нет по этому поводу ((
 
Сверху