Сессии PHP вместо cookie

Механизм сессии использует Cookie для своей работы, поэтому он может быть реализован на любом серверном языке программирования. Ниже рассматривается реализация механизма сессий для языка PHP.

Поддержка механизма сессий включена в PHP по умолчанию. Все данные, связанные с конкретной сессией будут храниться в файле в директории, указанной в опции session.save_path файла конфигурации.

Сессии являются простым способом хранения информации для отдельных пользователей с уникальным идентификатором сессии. Это может использоваться для сохранения состояния между запросами страниц. Идентификаторы сессий обычно отправляются браузеру через сессионный cookie и используются для получения имеющихся данных сессии. Отсутствие идентификатора сессии или сессионного cookie сообщает PHP о том, что необходимо создать новую сессию и сгенерировать новый идентификатор сессии.

Существуют два метода передачи идентификатора сессии: сookies и параметр URL. Модуль сессии поддерживает оба метода. Метод с cookies является оптимальным, но он не всегда доступен. Поэтому PHP предоставляет второй способ, который внедряет идентификатор сессии непосредственно в URL.

Сессии используют простую технологию. Когда сессия создана, PHP будет либо получать существующую сессию, используя переданный идентификатор (обычно из сессионного cookie) или, если ничего не передавалось, будет создана новая сессия. PHP заполнит суперглобальную переменную $_SESSION сессионной информацией после того, как будет запущена сессия. Когда PHP завершает работу, он автоматически сериализует содержимое суперглобальной переменной $_SESSION и отправит для сохранения, используя сессионный обработчик для записи сессии.

Использование сессий

Сессии могут запускаться вручную с помощью функции session_start() и, если директива session.auto_start установлена в 1, сессия автоматически запустится, когда PHP посылает любые данные в буфер вывода. Сессия обычно завершает свою работу, когда PHP заканчивает исполнять скрипт, но может быть завершена и вручную с помощью функции session_write_close().