PHP переключающиеся вкладки в браузерах вызывают сессию не, работают и должны повторно войти в систему

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

// set expiration time of 20 mins
session_cache_expire (20);
$cache_expire = session_cache_expire(); 
1
задан Frank Farmer 6 July 2010 в 17:55
поделиться

1 ответ

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

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

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

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

Решения:

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

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

2
ответ дан 2 September 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: