Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > теряется сессия


Автор: WolfMax 26.7.2013, 11:31
Реализовал в прокте поддержку диномичных доменов через .htaccess, прописал в настройках алиасы для домена *.domen.ru. Непонятное поведение. При переходе по ссылке на сабдомен с основного - сессия теряется и авторизация слетает, НО если ту же ссылку вбить в адресной строке - не теряется. Как может ссылка бить сессию ? 

Автор: Arantir 26.7.2013, 12:30
Цитата(WolfMax @  26.7.2013,  10:31 Найти цитируемый пост)
Как может ссылка бить сессию ? 

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

Вам следует явно указать домен в куке сессии в виде "domain.ru". Тогда на каком-то sub.domain.ru сессия тоже будет работать. 
http://php.net/manual/ru/function.setcookie.php

Автор: WolfMax 26.7.2013, 12:46
Так а почему работает если не переходить по ссылке, а скопировать адрес ссылки и вставить в адрес и перейти? 
у меня в сессиях параметр host имеет значение ".domain.ru",  а не "domain.ru", я так настроил на сервере 

Автор: Arantir 26.7.2013, 12:51
Без понятия. Вероятно, это поведение будет отличатся в разных браузерах.
Но по умолчанию кука сохраняется для текущего домена (какого уровня он бы не был) и не должна быть доступна на других доменах.

Автор: WolfMax 26.7.2013, 12:59
Для поддержки сабдоменов я в хостах прописал 

Код

 ServerName "domain.ru"
 ServerAlias "domain.ru" "*.domain.ru"  


работа разных доменнов реализуется одним скриптом, в настройках сессии поставил domain = "domain.ru"

хотя это никак не должно влиять

Автор: WolfMax 26.7.2013, 13:17
Всё заработало. Оказывается у меня была в скриптак доп проверка включена session.referer_check и поэтому раньше работало только при прямом заходе по адресу, а по ссылке - нет 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)