Я прочитал много форумов (включая этот) о передаче переменных сеанса между субдоменами, и я не могу заставить это работать. Может ли кто-нибудь объяснить, что мне не хватает?
Шаг 1 В файле php.ini: session.cookie_domain = ".mydomain.com" Проверено с помощью phpinfo (), что я использую правильный файл php.ini
Шаг 2 На странице www.mydomain.com установите переменную сеанса $ _SESSION ['a'], убедитесь, что она отображается, вызывая ее на следующей странице (она делает). Ссылка Clink на sub.mydomain.com
Шаг 3 Страница на sub.mydomain.com проверяет, установлена ли переменная сеанса, используя:
$ a = $ _SESSION ['a']; if (! isset ($ _ SESSION ['a'])) {echo "Ошибка: переменная сеанса недоступна"; }
К сожалению, я получаю сообщение об ошибке. Что мне не хватает? Заранее спасибо за помощь.
Итак, я пошел в другом направлении и использовал эту запись, которая работала …
session_set_cookie_params (0, '/', '.mydomain.com'); session_start ();
Вы должны передать идентификатор сеанса в качестве файла cookie и установить тот же идентификатор сеанса в новом домене
Например, вы можете использовать этот код
ini_set('session.cookie_domain', '.example.com'); $currentCookieParams = session_get_cookie_params(); $rootDomain = '.example.com'; session_set_cookie_params( $currentCookieParams["lifetime"], $currentCookieParams["path"], $rootDomain, $currentCookieParams["secure"], $currentCookieParams["httponly"] ); if(!empty($_SESSION)){ $cookieName = session_id(); setcookie('PHPSESSID', $cookieName, time() + 3600, '/', $rootDomain); } if(isset($_COOKIE['PHPSESSID'])){ session_name($_COOKIE['PHPSESSID']); }
отладки.
это то, чего вам не хватает.
в первую очередь вам нужно посмотреть заголовки HTTP, чтобы узнать, что происходит, и какие файлы cookie фактически установлены. Вы можете использовать аддон LiveHTTPHeaders Firefox или что-то еще. С такой информацией вы можете найти проблему. Без него никто не может ответить на вопрос на тур «мои сеансы не работают»
Он может подтвердить ваше утверждение о правильной настройке домена в настройках сеанса. Или опровергнуть это.
Это может показать некоторые другие неправильные настройки.
Это может показать, что cookie отправляется обратно браузером – так что вы можете быть уверены, что это проблема на стороне сервера
Всегда видеть фактический результат вашего кода (вместо угадывания, основанного на косвенных последствиях).