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

У меня есть сайт www.example.com. Это будет иметь несколько поддоменов, которые работают с одним приложением или программой. Например, login.example.com позволит пользователю войти на сайт, а system.example.com позволит пользователю получить доступ к информационной системе, а forums.example.com позволит пользователю получать доступ к форумам.

Возможно, нам понадобится передать информацию между подобластями, такими как идентификатор пользователя или предпочтение пользователя, и т. Д. Как мы собираемся передавать информацию между судоменами, используя переменные SESSION?

EDIT: Мне нравится эта идея:

Как первое, что в вашем скрипте:

ini_set('session.cookie_domain', '.example.com' ); 

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

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

 session.cookie_domain = ".example.com" 

Также проверьте руководство для разных подходов, используемых для установки входа ini.

1) субдомены должны использовать один и тот же путь для сохранения файлов сеанса

2) измените свой

php.ini session.cookie_domain = ".example.com"

или .htaccess php_value session.cookie_domain .example.com

или внутри скрипта ini_set('session.cookie_domain', '.example.com' );

Я нашел решение своей проблемы:

 session_name("2620368ghwahw90w"); session_set_cookie_params(0, '/', '.mydomain.com'); session_start(); 

Кажется, что это работает без проблем. Является ли это хорошим методом с низким уровнем риска безопасности?

Прежде чем создавать сеанс в php-файле, добавьте эту строку в первую строку:

 <?php //session cross to sub domain ini_set('session.cookie_domain', substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],"."),100)); 

вы можете использовать файлы cookie. проверьте параметр path в setcookie (), который делает этот файл cookie доступным для всего домена. Недостатками этого являются люди, которые отключили куки (частные режимы просмотра)

другим методом было бы передать sessionID вокруг с помощью ссылок или скрытых полей <input> (для форм).

поскольку отдельные сайты не обмениваются сеансами (насколько я знаю, поскольку субдомены являются технически «разными местами» от eachother), не используйте сеансы для хранения на стороне сервера. вместо этого используйте базу данных для обработки ваших сеансов. Таким образом, несколько сайтов могут использовать одну и ту же таблицу отслеживания сеанса.

Чтобы поделиться cookie сеанса между субдоменами, вы должны установить домен файла cookie на .example.org ( .example.org точка).

http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-domain

Я уже давно общаюсь с этим, и то, что сработало для меня, заключается в следующем:

session_name("some_session_name"); session_set_cookie_params(0, '/', '.some_domain.com'); session_start();

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