Не удается разделить сеансы PHP между поддоменом и основным - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу создать сеанс на поддомене, а затем получить к нему доступ из моего основного домена. Я прочитал много тем об этой проблеме, но ни один из ответов не работает для меня.

У меня есть VPS от Dreamhost, и я разместил следующую строку в phprc на обоих доменах (phprc добавлен в php.ini, способ редактирования php.ini из dreamhost) session.cookie_domain = ".MAINDOMAIN.com" где .MAINDOMAIN.com ссылается на мое доменное имя. Это было рабочее решение здесь: Совместное использование переменных SESSION между несколькими поддоменами

Затем я создал php-файл, который я вызываю test.php на login.DOMAIN.com и DOMAIN.com

На логин.DOMAIN.com/test.php у меня есть следующий код:

session_start();
$_SESSION['test'] = "Works";
print_r($_SESSION);

Вывод при переходе к файлу:

Array ([test] => Works)

После посещения этой страницы я затем перехожу на DOMAIN.com/test.php, где код:

session_start();
print_r($_SESSION);

И вывод:

Array ()

Я видел другие потоки, подобные этому: Разрешить перенос сессий php на поддомены с 4-мя различными параметрами для установки строки php.ini (непосредственно в php.ini, в .htaccess, в скрипте и, наконец, конфигурация пула php-fpm), и я попробовал их все, кроме последнего с конфигурацией пула php-fpm

Я также пытался установить эту строку поверх моих php-файлов, перед session_start:

session_set_cookie_params(0,"/",".MAINDOMAIN.com",FALSE,FALSE);

И это вдобавок ко всему:

session_name('mysession');

но ничего не работает

Я также проверил с помощью HTTP Header Live для FF, в домене которого для файла cookie задан ответ: Почему я не могу передавать пользовательские сеансы между поддоменами? и строка Set-Cookie - :

Set-Cookie: PHPSESSID = 9Q% 2Cfrhr747fferf4700; путь = /

Нет упоминания о каком домене? Что я делаю неправильно? Есть идеи?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Это ограничение для VPS, управляемых Dremhost, которое не допускает совместное использование сеансов php между виртуальными хостами (поддоменами). Я переключился на другого провайдера и все работает

0 голосов
/ 28 апреля 2018

Может быть, это скорее работа, но ...

если вы не передаете какую-либо личную информацию, вы можете передать информацию из субдомена в домен с помощью $ _GET, а затем использовать страницу (getsession.php) в домене, чтобы превратить $ _GET в $ _SESSION и перенаправить обратно на Индекс домена для удаления $ _GET из URL.

...