Доступ к переменной сеанса PHP из разных путей - PullRequest
4 голосов
/ 10 февраля 2011

Я сталкиваюсь с очень странной проблемой в PHP-сессиях, вот факты:

Создание кода переменной сеанса - mydomain / a / b / c / create_session.php

<?
    session_start();
    $_SESSION['test'] = "Hello World";
?>

Чтение переменной сеанса read mydomain / a / b / c / read_session.php

<?
    session_start();
    echo $_SESSION['test'];
?> 

Проблема

Когда я получаю доступ к коду read_session.php из того же URL-адреса, он работает нормально. Но когда я пытаюсь прочитать переменную сеанса из другого пути, это не работает.

Примеры

mydomain / a / b / c / read_session.php - работает!

mydomain / a / b / read_session.php - работает!

mydomain / a / read_session.php - работает!

mydomain / read_session.php - не работает!

mydomain / d / read_session.php - не работает!

Ответы [ 4 ]

1 голос
/ 10 февраля 2011

Вы можете попробовать использовать session_set_cookie_params, если у вас есть настройки конфигурации, где-то что-то запутано:

session_set_cookie_params(0, '/');
session_start();

Вы можете настроить cookie-файлы, чтобы они могли использоваться только на определенныхдомен.Возможно, что это произошло здесь.Обратите внимание, что если это проблема, лучший способ ее исправить - изменить значение в php.ini:

session.cookie_path = "/"
1 голос
/ 10 февраля 2011

Это не может быть проблемой.

Домены должны быть точно такими же (политика cookie), это означает, что http://www.domain не совпадает с http://domain

0 голосов
/ 10 февраля 2011

Файлы cookie (и, следовательно, файлы cookie для идентификаторов сеансов) могут быть связаны с определенными доменами и путями.Конфигурация файлов cookie идентификатора сеанса PHP по умолчанию заключается в привязке файлов cookie к текущему домену ( session.cookie_domain ) и пути / ( session.cookie_path).

Возможно, ваша конфигурация сеанса отличается от конфигурации по умолчанию, поскольку путь к файлу cookie установлен на /a, так что файл cookie действителен только в /a и тех путяхгде /a - правильный префикс пути (т. е. /a/…).

Попробуйте изменить путь к файлу cookie на /:

ini_set('session.cookie_path', '/');
0 голосов
/ 10 февраля 2011

Как говорит Бридис, возможно, вы не используете одни и те же домены. Они должны быть одинаковыми.

Убедитесь, что вы проверили session.cookie_paths . Возможно, ваши настройки конфигурации устанавливают путь к cookie-файлу в «/ a». В этом случае произойдет описанная вами функциональность, потому что будет несоответствие пути.

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