PHP. Сессии в БД. Кроссдоменная авторизация. Что-то я в этой жизни не понимаю?

Сессии хранятся в БД. Авторизация общая на 2 сайта(2 домена, сайты лежат рядом на одном сервере). Когда юзер авторизуется на одном сайте, происходит редирект на второй, где для session_name() прописывается та же величина, что и на первом сайте (в куках). Таблица с сессионными данными общая для 2х сайтов.

На старом хостинге все работало норм, на новом — пока нет.

Описание проблемы —

Я авторизовался с одного сайта. Захожу на второй, из базы извлекаются данные(фунция read), тут все норм. Но — сразу после session_start(), делаю print_r($_SESSION) и вижу пустой массив. Т.е. строку отдал, получил — … ничего не получил. Так происходит только с данными записанными на одном сайте, которые я пытаюсь прочитать на другом.

Что нашел — данные на старом хостинге писались в виде сериализованного масссива. Здесь же — 'rJFJvf6LVaiQoSWdAHmIFSu5Zfx-393AnbN81sd2B5jmEeWlhKYJB_E9Lv93BjVw'. Может быть в этом дело.


session.serialize_handler = php на обоих хостингах

php — 5.2.4(старый) / 5.2.14(нов)

все настройки php блока session — одинаковые.


Спасибо!
  • Вопрос задан
  • 5243 просмотра
Решения вопроса 1
kashey
@kashey
Программирую большую половину жизни
Вариан 1 — злой и страшный «Suhosin» — шифратор данных сессии.
И будьте добры показать настройки read-write-start сессий
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Hotpilot
rJFJvf6LVaiQoSWdAHmIFSu5Zfx-393AnbN81sd2B5jmEeWlhKYJB_E9Lv93BjVw — это больше похоже на ключ, чем на данные и длина = 64
Ответ написан
@Hotpilot
Похоже, что php собран с модулем повышения безопасности, типа Suhosin, который шифрует данные сессии. И ключ шифрования зависит от домена. Попробуйте отключить все лишние модули.
Ответ написан
@Hotpilot
а session_decode() правильно раскодирует эту строку?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы