Переключение PHP в браузерах приводит к тому, что сессия не работает и должна быть перезагружена - PullRequest
1 голос
/ 06 июля 2010

У меня есть защищенная паролем область сайта, с помощью которой я использую сеансы, чтобы пользователь мог переходить от страницы к странице защищенной области.Однако если я открою новую вкладку ДА, оставлю другую вкладку открытой (ту, что находится в защищенной области), а затем сделаю что-то на новой вкладке и переключусь обратно на старую вкладку, я вынужден повторно войти в систему.Я пытался установить срок годности на двадцать минут между сеансами, но мне не повезло.Есть идеи?

// set expiration time of 20 mins
session_cache_expire (20);
$cache_expire = session_cache_expire(); 

1 Ответ

2 голосов
/ 06 июля 2010

Является ли защищенная область подкаталогом URL, который вы загружаете на другой вкладке? Это может привести к тому, что файлы cookie будут испорчены, поскольку первый файл cookie может быть установлен для более конкретного пути, чем URL второй страницы, поэтому начинается новый сеанс.

Этот парень лучше объясняет это:

http://www.php.net/manual/en/function.session-start.php#91298

Если два разных файла не имеют доступа тот же сеанс, это может означать только один вещь: они не на том же уровень каталога. Примеры: а) под https, а один под http. (очень распространенная и раздражающая ошибка) б) Один под /, другой под / dir1 и / dir1 запускались первыми. печенье, созданное сеансом, предназначено для / dir1 и только глубже, так что другой сценарий не может прочитать это; это не видит нет сеанс, так что начинается новый.

Решения:

1) Сессия должна начинаться всегда происходит в корневом каталоге. Если один из ваши сценарии обнаруживает, что пользователь не вошли, например, использовать session_destroy () и отправьте его войдите в корневой каталог. Сценарии, которые использовать сессию без входа в систему нужны более креативные решения, такие как перенаправление в корневой каталог, настройка сеанс и перенаправление назад.

2) Используйте SID от страницы к странице вместо печенье. Плюс в том, что это тоже работает с http / https. Недостатком является очень некрасивые URL коды и сложнее ремонтопригодность (какие страницы ссылаются на gallery.php без использования SID?! ').

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