Давайте пройдемся через это:
Файлы cookie и сеансы - это оба способа сохранить состояние приложения между различными запросами, которые делает браузер. Благодаря им, например, вам не нужно входить в систему каждый раз, когда вы запрашиваете страницу в StackOverflow .
Печенье
Файлы cookie - это небольшие фрагменты данных (длиной не более 4 КБ), которые хранят данные в парах ключ = значение:
name=value
Они устанавливаются либо с помощью JavaScript , либо через сервер с использованием заголовка HTTP .
Файлы cookie имеют установленную дату и время истечения срока действия, например, с использованием заголовков HTTP:
Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
В результате браузер установит файл cookie name2
со значением value2
, срок действия которого истечет примерно через 9 лет.
Файлы cookie считаются крайне небезопасными, поскольку пользователь может легко манипулировать их содержанием. Вот почему вы всегда должны проверять данные cookie . Не думайте, что то, что вы получаете от файлов cookie, обязательно соответствует вашим ожиданиям.
Файлы cookie обычно используются для сохранения состояния входа в систему, когда имя пользователя и специальный хэш отправляются из браузера, и сервер сверяет их с базой данных для подтверждения доступа.
Файлы cookie также часто используются при создании сеансов .
Сессии
Сеансы немного разные. Каждый пользователь получает идентификатор сеанса , который отправляется обратно на сервер для проверки либо с помощью файла cookie, либо с помощью переменной GET .
Сеансы обычно недолговечны, что делает их идеальными для сохранения временного состояния между приложениями. Сеансы также истекают, когда пользователь закрывает браузер.
Сеансы считаются более безопасными, чем файлы cookie, поскольку сами переменные хранятся на сервере . Вот как это работает:
- Сервер открывает сеанс (устанавливает cookie через HTTP-заголовок)
- Сервер устанавливает переменную сеанса.
- Страница изменений клиента
- Клиент отправляет все файлы cookie вместе с идентификатором сеанса из шага 1.
- Сервер считывает идентификатор сеанса из cookie.
- Сервер соответствует идентификатору сеанса из списка в базе данных (или памяти и т. Д.).
- Сервер находит совпадение, читает переменные, которые теперь доступны на
$_SESSION
суперглобале.
Если PHP не найдет совпадения, он начнет новый сеанс и повторит шаги с 1 по 7.
Вы можете хранить конфиденциальную информацию в сеансе, потому что она хранится на сервере, но имейте в виду, что идентификатор сеанса все равно может быть украден, если пользователь, скажем, вошел в систему через небезопасный Wi-Fi. (Злоумышленник может прослушать файлы cookie и установить их как свои собственные, он не увидит сами переменные, но сервер идентифицирует злоумышленника как пользователя).
В этом суть. Вы можете узнать больше в руководстве по PHP по обоим предметам.