Прежде всего, давайте разрушим давний миф (или, по крайней мере, я думаю, что это уже существующий миф) о том, что сеансовые файлы cookie отличаются от обычных файлов cookie. Нет. Сеансовый файл cookie — это обычный файл cookie. Только свойства файла cookie сеанса, которые установлены (или, скорее, не установлены), обычно отличаются. Но механизм точно такой же.
Файл cookie устанавливается путем отправки браузеру заголовка ответа http:
Set-Cookie: name=value[; possible expiration-date][; other possible properties]
Что обычно отличает сеансовый файл cookie от обычного файла cookie, так это то, что срок его действия не установлен (или срок действия установлен на дату в прошлом). Это означает, что браузер удалит файл cookie после закрытия браузера. Но «обычный» файл cookie может сделать это точно так же. Таким образом, делая его, так сказать, «сессионным файлом cookie».
Теперь, когда мы убрали это с дороги; Механизм, с помощью которого файлы cookie обычно используются приложениями, чтобы заставить их действовать как сеансовые файлы cookie, помимо вышеупомянутых свойств, заключается в том, что значение файла cookie содержит только уникальное идентифицируемое значение некоторого рода. Возможно, md5
или, может быть, sha1
хеша.
Каждый раз, когда браузер запрашивает ресурс на сервере, он отправляет этот файл cookie (если срок его действия не истек) с заголовком http-запроса следующим образом:
Cookie: name=value
Механизмы сеанса в бэкэнде (в вашем случае это PHP) связали уникальный идентификатор файла cookie с данными, которые были сохранены в файле в файловой системе сервера или, возможно, в базе данных. Таким образом, каждый раз при получении файла cookie он может извлекать эти данные и связывать их с запросом.
Преимущество этого заключается в том, что конфиденциальная информация 1) может быть скрыта от необходимости путешествовать по сети и 2) не попадает в кеш файлов cookie браузера пользователя, сохраняя ее на сервере.
Таким образом, в основном вы хотите отправлять неконфиденциальную и не важную для приложения информацию в обычном файле cookie (подумайте о: настройках макета, непостоянном списке воспроизведения, таком как на YouTube, возможно, и т. д.) и использовать сеанс для хранения конфиденциальная информация.
изменить:
Извините, игнорируйте "или срок действия установлен на дату в прошлом", так как это было ложно. Это приведет к тому, что браузер немедленно аннулирует файл cookie и, следовательно, больше не будет отправляться вместе с запросами.
person
Decent Dabbler
schedule
10.04.2011