no_alex
Новичок
Передача данных сессии между различными доменами
Привет всем!
Возникла такая проблема: если сайт состоящий из нескольких субдоменов (зачем? - не спрашивайте: требование заказчика). Пользователь в процессе сёрфинга по сайту может многократно перепрыгивать-возвращаться с одного субдомена на другой. Мне, соответственно, надо "удерживать" одну и ту же сессию в процессе этого сёрфинга.
На платформе windows задача решилась сравнительно легко - для сессионных кук я указал, чтобы они были едины для всех субдоменов. В "особых" случаях принудительно передавал SID через GET.
Но когда я переложил проект на сервер под Linux - он работать перестал.
После того как я провел ряд экспериментов, я понял, что методы хранения данных в сессии на этих платформах различаются, несмотря на то что параметры в конфигурационных файлах у меня совпадают. На windows в файле сессии я вижу обычную сериализованную строку, а на Linux эти данные зашифрованы каким-то образом.
Как я уже упоминал, кофиги у меня одинаковые, но вот когда я сравниваю phpinfo на обоих серверах то вижу одно различие.
На windows:
Registered save handlers files user
На Linux:
Registered save handlers files user mm
Возможно в этом вся проблема (в мануалах я ничего не нашёл по этому поводу). Но вот как изменить мне эти значения я так и не понял. В конфигах у меня, там и там стоят:
session.save_handler = files
Для хостинга используется VPS, поэтому, если для решения этой задачи потребуется пересобрать PHP - проблем не будет.
Возможно я вообще "думаю не в ту сторону". Может у кого-то есть совершенно другое решение по данной проблеме?
-~{}~ 28.09.08 04:07:
Интересная особенность на Linux:
между доменами example.com и www.example.com сессия вышеназванным способом передается без проблем. А вот при попытке "перепрыгнуть" на домен otherdomain.example.com - данные сессии очищаются.
Явно видно что разработчики пытались, таким образом, обеспечить высокую надёжность при доступе к сессионным данным (т.е. недоступность с другого домена). Но можно ли мне как-то отключить эту опцию, и если нет, то как мне решить выше поставленную задачу?
P.S. Чисто из любопытства - почему подобный механизм не реализован под windows?
Привет всем!
Возникла такая проблема: если сайт состоящий из нескольких субдоменов (зачем? - не спрашивайте: требование заказчика). Пользователь в процессе сёрфинга по сайту может многократно перепрыгивать-возвращаться с одного субдомена на другой. Мне, соответственно, надо "удерживать" одну и ту же сессию в процессе этого сёрфинга.
На платформе windows задача решилась сравнительно легко - для сессионных кук я указал, чтобы они были едины для всех субдоменов. В "особых" случаях принудительно передавал SID через GET.
Но когда я переложил проект на сервер под Linux - он работать перестал.
После того как я провел ряд экспериментов, я понял, что методы хранения данных в сессии на этих платформах различаются, несмотря на то что параметры в конфигурационных файлах у меня совпадают. На windows в файле сессии я вижу обычную сериализованную строку, а на Linux эти данные зашифрованы каким-то образом.
Как я уже упоминал, кофиги у меня одинаковые, но вот когда я сравниваю phpinfo на обоих серверах то вижу одно различие.
На windows:
Registered save handlers files user
На Linux:
Registered save handlers files user mm
Возможно в этом вся проблема (в мануалах я ничего не нашёл по этому поводу). Но вот как изменить мне эти значения я так и не понял. В конфигах у меня, там и там стоят:
session.save_handler = files
Для хостинга используется VPS, поэтому, если для решения этой задачи потребуется пересобрать PHP - проблем не будет.
Возможно я вообще "думаю не в ту сторону". Может у кого-то есть совершенно другое решение по данной проблеме?
-~{}~ 28.09.08 04:07:
Интересная особенность на Linux:
между доменами example.com и www.example.com сессия вышеназванным способом передается без проблем. А вот при попытке "перепрыгнуть" на домен otherdomain.example.com - данные сессии очищаются.
Явно видно что разработчики пытались, таким образом, обеспечить высокую надёжность при доступе к сессионным данным (т.е. недоступность с другого домена). Но можно ли мне как-то отключить эту опцию, и если нет, то как мне решить выше поставленную задачу?
P.S. Чисто из любопытства - почему подобный механизм не реализован под windows?