У меня есть 3 домена:
- member.example.com для централизованного входа на SERVER1
- news.example.com для новостей на SERVER1
- видео.example.com для видео на другом сервере SERVER2
Для кросс-доменных сессий я использую:
session_name('example');
session_set_cookie_params(0, '/', '.example.com');
session_start();
Когда пользователь входит на member.example.com, вседанные сеанса доступны на news.example.com, но не на video.example.com, поскольку они находятся на другом сервере.Идентификатор сеанса одинаков во всех поддоменах, но поскольку это другое физическое поле, файл сеанса отсутствует.
Я ищу лучший способ, позволяющий обмениваться сеансами между поддоменами, когда субдоменыразмещены на разных физических серверах.
Я знаю подход к хранению данных в базе данных, но хочу этого избежать.Я также знаю, что могу отправить зашифрованную информацию о сеансе в URL для video.example.com, но я чувствую, что это уродливо, и я хочу создать чистое решение.
После обхода файлов cookie и других реализаций яизучил следующий сценарий.
В members.example.com после успешного входа в систему я попытался создать сеанс для video.example.com, вызвав страницу создания сеанса на video.example.com с помощью cURL.Я попытался использовать следующий код (и передать соответствующие поля с помощью cURL):
session_name('example');
session_set_cookie_params(0, '/', '.example.com');
session_start();
$_SESSION['id']=$_POST['id'];
$_SESSION['name']=$_POST['name'];
print_r($_SESSION)
В ответе cURL я нашел эти переменные, установленные для сеанса, но, к сожалению, для вызова cURL был создан новый идентификатор сеанса.Я пытался решить эту проблему с помощью существующего идентификатора сеанса, но он не работал.
Мне известны другие варианты, но я особенно заинтересован в этом подходе.