У меня проблема, связанная с сеансом между двумя субдоменами, и я прочитал много потоков здесь и в других местах.
У меня есть 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 для обоих доменов.
ура
Идентификаторы сеанса 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)
ура