Сессии PHP через sub домены

Я пытаюсь настроить следующее:

auth.example.com
sub1.example.com
sub2.example.com

Если пользователь посещает sub1.example.com или sub2.example.com и они не зарегистрированы, они перенаправляются к auth.example.com и может войти в систему.

sub1.example.com и sub2.example.com два отдельных приложения, но используют те же учетные данные.

Я пытался установить следующее в своем php.ini:

session.cookie_domain = ".example.com"

но это, кажется, не передает информацию от одного домена до другого.

[Править]

Я попробовал следующее:

sub1.example.com/test.php

session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Regsitered'] = 1;
echo '<a href="http://auth.example.com/test.php">Change Sites</a>'

auth.example.com/test.php

session_set_cookie_params(0, '/', '.example.com');
session_start();
print session_id() . "<br>";
$_SESSION['Checked'] = 1;
print_r($_SESSION);

Идентификаторы сессии являются точно тем же, но когда я выхожу $_SESSION переменная, которую это не показывает обоим ключам, только безотносительно ключа, который я установил под каждым доменом.

89
задан Patrick Mevzek 2 August 2019 в 22:12
поделиться

4 ответа

Быстрое и грязное решение - чтобы использовать это для перенаправления:

header( $url.'?'.session_name().'='.session_id() );

это добавит что-то вроде ? PHPSESSID = etnm7kbuf5lg0r6tv7je6ehtn4 к URL-адресу, который сообщает PHP идентификатор сеанса, который он должен использовать.

-2
ответ дан 24 November 2019 в 07:17
поделиться

Я понимаю, что вам не нужно что-то вроде OpenID, как предлагает Джоэл, но вы хотите иметь доступ к данным сеанса в нескольких доменах.

Единственная возможность что я могу рассматривать как решение этой проблемы - сохранить данные сеанса в базе данных и извлечь их из этой базы данных.

0
ответ дан 24 November 2019 в 07:17
поделиться

Попробуйте использовать:

session.cookie_domain = "example.com"

Вместо:

session.cookie_domain = ".example.com"

Обратите внимание на пропущенную точку в начале.

Будьте осторожны при использовании этого параметра, поскольку он поддерживается не всеми браузерами.

5
ответ дан 24 November 2019 в 07:17
поделиться

Я не знаю, существует ли проблема, но я просто столкнулся с той же проблемой и решил ее, задав имя сеанса перед вызовом session_set_cookie_params () :

$some_name = session_name("some_name");
session_set_cookie_params(0, '/', '.example.com');
session_start();

Я ничего не изменил в моем php.ini , но теперь все работает нормально.

130
ответ дан 24 November 2019 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: