У меня есть несколько вопросов о сессиях PHP, которые я смог бы выяснить с помощью найденных страниц.
Но сначала немного общей информации, я хочу создать несколько поддоменов на одном сервере,
sub1.domain.com -> 10.10.10.10 (Образец IP Сервера)
sub2.domain.com -> 10.10.10.10 (Образец IP Сервера)
sub3.domain.com -> 10.10.10.10 (Образец IP Сервера)
все эти субдомены будут работать с одними и теми же файлами, но они должны иметь свои собственные сеансы, например, если я вошел в систему на sub1 и я открыл sub2, мне нужно выйти из системы для этого субдомена.
По умолчанию PHP использует файл cookie PHPSESSID для распространения данных сеанса на несколько страниц, и по умолчанию он использует текущий домен верхнего уровня и поддомен в объявлении cookie.
Пример: www.domain.com
Недостатком этого является то, что данные сеанса не могут перемещаться с вами в другие поддомены. Таким образом, если вы начали сеанс на www.domain.com, данные сеанса станут недоступны на forums.domain.com. Решение состоит в том, чтобы изменить домен, который PHP использует, когда устанавливает cookie «PHPSESSID».
Предполагая, что у вас есть файл инициализации, который вы включаете в верхней части каждой страницы PHP, вы можете использовать функцию ini_set (). Просто добавьте это в начало вашей страницы инициализации:
ini_set (‘session.cookie_domain’, substr ($ _ SERVER [‘SERVER_NAME’], strpos ($ _ SERVER [‘SERVER_NAME’], «.»), 100));
Эта строка кода забирает домен и удаляет субдомен.
Пример: forums.domain.com -> .domain.com
Теперь каждый раз, когда PHP устанавливает файл cookie PHPSESSID, файл cookie будет доступен для всех поддоменов!
вам нужно
ini_set («session.cookie_domain», «.mydomain.com»);
добавьте его перед функцией session.start () на любой странице, которая создает cookie сессии.
Или вы можете добавить:
session.cookie_domain = .mydomain.com
на php.ini
Убедитесь, что вы очистили свои куки, прежде чем попробовать.
Других решений пока нет …