PHP-сессия с субдоменом - PullRequest
1 голос
/ 14 мая 2010

Я прочитал много форумов (включая этот) о передаче переменных сеанса между поддоменами, и я не могу заставить это работать. Может кто-нибудь объяснить, чего мне не хватает?

Шаг 1 В файле php.ini: session.cookie_domain = ".mydomain.com" Проверено с помощью phpinfo (), что я использую правильный файл php.ini

Шаг 2 На странице www.mydomain.com установите переменную сеанса $ _SESSION ['a'], убедитесь, что она появляется, вызвав ее на следующей странице (это так). Ссылка на ссылку на sub.mydomain.com

Шаг 3 Страница на sub.mydomain.com проверяет, установлена ​​ли переменная сеанса, используя:

$ a = $ _SESSION ['a']; если (! Исеть ($ _ SESSION [ 'а'])) { echo "Ошибка: переменная сеанса недоступна"; }

К сожалению, я получаю сообщение об ошибке. Что мне не хватает? Заранее спасибо за помощь.

Ответы [ 3 ]

3 голосов
/ 14 мая 2010

Итак, я пошел в другом направлении и использовал эту запись, которая сработала ...

session_set_cookie_params (0, '/', '.mydomain.com'); session_start ();

3 голосов
/ 14 июля 2013

Вы должны передать идентификатор сессии в виде файла 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']); 
}
2 голосов
/ 14 мая 2010

отладки.
это то, что тебе не хватает.

Прежде всего, вам нужно посмотреть заголовки HTTP, чтобы увидеть, что происходит и какие файлы cookie на самом деле устанавливаются. Вы можете использовать LiveHTTPHeaders Firefox addon или что-то еще. С такой информацией вы можете найти проблему. Без этого никто не может ответить на вопрос о туре "мои сессии не работают"

Это может подтвердить ваше заявление о правильной настройке домена в настройках сеанса. Или опровергнуть это.
Это может выявить некоторые другие неправильные настройки.
Может показывать, что куки отправляются обратно браузером, поэтому вы можете быть уверены, что это проблема на стороне сервера

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...