#php #session #sessionid
#php #сессия #sessionid
Вопрос:
Как php-скрипт обрабатывает переменные сеанса, если он получает два файла cookie с PHPSESSIDs? Заполняет ли он $ _SESSION переменными из первого PHPSESSID или из последнего? Или просто объединяет их?
Комментарии:
1. Попробуйте
<?php echo SID; ?>
и сравните отраженную строку со значениями cookie.
Ответ №1:
$_COOKIE — это ассоциативный массив, и значение файла cookie сеанса будет проанализировано с учетом этого, поэтому выигрывает последний. Однако, поскольку браузеры обновляют cookie-файлы при отправке заголовка «Set-Cookie» с сервера, единственной возможной причиной для этого, вероятно, является вмешательство на стороне клиента.
Комментарии:
1. Заголовок «Cookie» отправляется браузерами. Серверы отправляют заголовок «Set-Cookie».
2. @BINARYLV’s: вы действительно очень правы. Обновлено согласно комментарию.
Ответ №2:
Может быть только один активный сеанс. И это первый идентификатор сеанса, который был найден в либо $_COOKIE
, $_GET
либо $_POST
это имя совпадает с текущим session.name значение.
Комментарии:
1. Не будет ли это тот, который был написан последним? Я имею в виду, что если браузер получит файл cookie с тем же именем, что и существующий, он просто перезапишет его, верно? Он никогда бы не отправил два на сервер, поскольку я не думаю, что у него есть концепция «двух файлов cookie с одинаковыми именами», не так ли?
2. @AgentConundrum: Может быть несколько файлов cookie с разными областями действия. В настоящее время я не уверен, как браузеры справятся с этой ситуацией. Я думаю, они предпочли бы самый конкретный.
3. Он отправит, если один из них предназначен для .domain.com а другой предназначен для домена forum.domain.com — итак, открытие forum.domain.com браузер отправляет их оба