Файлы сеанса обычно хранятся, скажем, /tmp/
на сервере и имеют имена sess_{session_id}
. Я просматривал содержимое и не могу понять, как они на самом деле работают.
Получить имя переменной и содержимое из файла очень просто. Но как PHP узнает, какая сессия кому принадлежит?
Session_id кажется совершенно случайным, и один IP-адрес может иметь несколько пользователей, и каждый пользователь может иметь несколько сеансов, если у них открыто более одного окна браузера.
Итак, как это работает?
Ответы:
В общей ситуации:
PHPSESSID
)Данные в файлах сеансов - это содержимое
$_SESSION
, сериализованное (т. Е. Представленное в виде строки с такой функцией, как сериализация ) ; и не сериализуется, когда файл загружается PHP, чтобы заполнить$_SESSION
массив.Иногда идентификатор сеанса не сохраняется в файле cookie, но также отправляется в URL-адресах, но в настоящее время это довольно редко.
Для получения дополнительной информации вы можете взглянуть на раздел руководства « Обработка сеанса» , который дает некоторую полезную информацию.
Например, есть страница о передаче идентификатора сеанса , в которой объясняется, как идентификатор сеанса передается со страницы на страницу, с помощью файла cookie или в URL-адресах - и какие параметры конфигурации влияют на это.
источник
Как работает сеанс PHP
Во-первых, PHP создает уникальный идентификационный номер длиной 16 байт (хранящийся, например, в виде строки из 32 шестнадцатеричных символов
a86b10aeb5cd56434f8691799b1d9360
) для отдельного сеанса.Файл cookie PHPSESSID передает этот уникальный идентификационный номер в браузер пользователя, чтобы сохранить этот номер.
Новый файл создается на сервере с таким же именем уникального идентификационного номера с sess_ префиксом (т.е.
sess_a86b10aeb5cd56434f8691799b1d9360
) .Браузер отправляет этот файл cookie на сервер с каждым запросом.
Если PHP получает этот уникальный идентификационный номер из файла cookie PHPSESSID (при каждом запросе), то PHP выполняет поиск во временном каталоге и сравнивает этот номер с именем файла. Если оба они одинаковы, он извлекает существующий сеанс, в противном случае он создает новый сеанс для этого пользователя.
Сеанс уничтожается, когда пользователь закрывает браузер или покидает сайт. Сервер также завершает сеанс после истечения заранее определенного периода времени сеанса. Это простые шаги механизма, которые PHP использует для обработки сеанса. Надеюсь, эта статья поможет вам понять, как работает PHP SESSION.
См. Эту статью для получения более подробной информации. Как работает сеанс PHP
источник
mysite.com/cart
. Я также получу свое «Привет, Джо Доу, 5 сообщений, вот список твоей корзины…», также известная как информация о сеансе. - Но почему браузер в отношении этой пустой вкладки должен отправлять какой-либо Session-ID вместе с GET-запросом? быстрое обновление: Ах, нашел ответ: +)Идентификатор сеанса действительно случайный и передается в файле cookie или в URL-адресе, в зависимости от конфигурации. Возможно, вы уже видели этот PHPSESSID = xxxx в некоторых URL-адресах, есть файл cookie с таким именем.
источник
Сеансы в PHP запускаются с помощью функции session_start (). Как и функция setcookie (), функция session_start () должна стоять перед любым HTML, включая пустые строки, на странице. Это будет выглядеть так:
<?php session_start( );?><html><head>
....... и т. Д. Функция session_start () генерирует случайный идентификатор сеанса и сохраняет его в файле cookie на компьютере пользователя (это единственная информация о сеансе, которая фактически сохраняется на стороне клиента. ) Имя по умолчанию для файла cookie - PHPSESSID, хотя его можно изменить в файлах конфигурации PHP на сервере (однако большинство хостинговых компаний оставляют его в покое). Чтобы ссылаться на идентификатор сеанса в вашем PHP-коде, вы должны поэтому ссылаться на переменная $ PHPSESSID (это имя файла cookie; помните это из файлов cookie?)источник