У меня есть 3 домена:
- member.example.com для входа в централизатор на SERVER1
- news.example.com для новостей на SERVER1
- video.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 и других реализаций я изучил следующий сценарий.
На member.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 был создан новый идентификатор сеанса. Я попытался решить это с помощью существующего идентификатора сеанса, но это не сработало.
Я знаю и другие варианты, но меня особенно интересует этот подход.