Выделить сеанс по субдоменам в php

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

У меня есть www.xx.com и sub.xx.com, и я установил

session_name("PHPSESSXX"); session_set_cookie_params(0, '/', '.xx.com'); 

и путь session.save_ одинаковый для обоих доменов.

Я получаю файл cookie под названием PHPSESSXX на обоих доменах, и он имеет такое же значение.

Когда я вхожу в систему на www.xx.com, я получаю сеанс с некоторыми подробностями в нем, и он остается таким, пока я не перейду на sub.xx.com. Затем сеанс на sub.xx.com пуст, и если я обновляю www.xx.com, сеанс также исчез. Поэтому он делает что-то, но, кажется, он переписывает данные сеанса каждый раз, когда я посещаю другой подобъект.

Какие-нибудь идеи? Могу ли я отлаживать это как-то?

Btw: Я использую ssl для обоих доменов.

ура

Related of "Выделить сеанс по субдоменам в php"

Идентификаторы сеанса PHP сохраняются в файлах cookie. Чтобы сделать cookie доступным во всех поддоменах, вам необходимо назначить его корневому домену. Затем все поддомены получат идентификатор сеанса из cookie, и PHP может найти сеанс, используя идентификатор прошедшего сеанса.

Как оказалось, вам просто нужно установить session.cookie_domain в корневой домен в файле php.ini

session.cookie_domain = ".example.com" Также проверяйте руководство для разных подходов, используемых для установки входа ini.

На ваш вопрос ответили

Совместное использование переменных SESSION между несколькими субдоменами

Моим решением было установить флаг в .htaccess следующим образом:

 php_flag "suhosin.session.cryptdocroot" 0 

И теперь он отлично работает: o)

Проблема заключалась в том, что Сухосин был установлен в системе, а переменная ini

 suhosin.session.cryptdocroot = On 

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

Мне не удалось установить переменную Off или [ничего] в ini-файле, хотя, возможно, я не нашел нужный файл.

Я также попытался установить его на PHP без везения. Как это:

 ini_set('suhosin.session.cryptdocroot', 0) 

ура