Сессии в PHP нужны для сохранения различных данных при работе с клиентскими запросами. Например чтобы знать, что несколько запросов разнесенные по времени к серверу принадлежат одному пользователю, то для него открывается сессия.
Создаем сессию командой session_start();
При этом на сервере создается файл с данными о сессии, а клиенту отправляется HTTP заголовок:
Set-Cookie: PHPSESSID=c3700a86946ba8a60c6397d7e388a801; path=/
Клиент должен при каждом запросе передавать в заголовке это значение куки. Таким образом сервер и PHP будет понимать, что этот тот самый клиент.
Теперь можно используя глобальную переменную $_SESSION записывать и считывать значения из файла с данными на сервере. Доступ, к которому, имеет PHP на сервере.
Если не работаю куки на клиенте, то ID сессии можно передавать от клиента запросами GET и POST.
По умолчанию сессия для клиента создается одна и имеет имя session.name прописанное в конфигурации. В нашем случае это PHPSESSID.
Функция session_name() позволяет задать другое имя или вернуть текущее.
Таким образом мы можем создавать несколько сессий для одного клиента.
session_name(«SESSID1»);
session_start();
$_SESSION[«myvar»] = «session_var1»;
А в другом файле:
session_name(«SESSID2»);
session_start();
$_SESSION[«myvar»] = «session_var2»;
Соответственно мы зарегистрируем две сессии с разными ID и myvar в них будет отличаться.
Получить ID сессии можно функцией session_id()
Данные, сохраняемые в файле сессии могут быть любыми, которые можно сериализовать. Например нельзя сохранить в файле сессии ресурс PHP
Leave a Comment