Что использовать: Session против Cookie
Важнейшей особенностью веб-программирования является возможность беспрепятственно передавать данные от одной страницы к другой. Чаще всего этой возможностью пользуются для передачи логинов пользователей, сообщений об ошибке, содержимого «тележек» в интернет-магазинах и т.д.
Что «сохранить» данные на странице, необходимо использовать следующие глобальные переменных: $_COOKIE или $_SESSION. Однако, не смотря на то, что в итоге вы достигните одну и ту же цель, эти переменные необходимо использовать только в определённых случаях. Целью данной статьи я ставлю задачу — дать краткий обзор различий Session (далее «сессии») и Cookie (далее «печеньки». Не надо говорить что я переводил промтом, мне просто действительно нравиться называть их «печенькми»), рассказать, когда надо использовать одно, а когда другое, а также рассказать об их «плюсах» и «минусах».
Их разница заключается лишь в способе хранения данных: Печеньки хранят данные в браузере пользователя, а Сессии на стороне сервера.
Основы сессий (кратко)
В двух словах, сессии — это механизм, который позволяет однозначно идентифицировать клиент (браузер) пользователя и созданный для этого клиента файл на стороне сервера, в котором будут храниться необходимые данные.
Плюсы сессий
- Легко можно храниться большие объёмы данных
- При каждой загрузке страницы, на сервер передаётся только ссылка на сессию, что позволяет экономить трафки, в отличии от «печенек», которые передают всю информацию.
- Данные храняться на веб-сервере, что делает сессии безопасными потому, что они не могут быть изменены или просмотрены на стороне клиента.
Минусы сессий
- Сессии прекращают свою жизнь при закрытии браузера или по истечению некоторого количества времени. Однако, срок жизни сессии можно изменить используя файл настроек — php.ini. Там же, вы можете сделать сессии вечными.
Основы «печенек»
«Печеньки» отправляются на сервер каждый раз, когда вы загружаете страницу. После создания «печеньки» ей задаётся срок жизни. По истечению этого срока — «печенька» прекращает своё существование.
Плюсы
- «Печенька» может существовать настолько долго, на сколько это необходимо сайту. Она будет существовать даже в том случае, если вы закроете и вновь отроете браузер.
- Позволяют использовать формы аля «входить автоматически».
- Можно хранить временную информацию, различные пользовательские настройки, например, если пользователь просматривает список отсортированный особенном образом, то можно запомнить тип сортировки и использовать его автоматически для всех списков, просматриваемых этим пользователем.
Минусы
- Храняться на пользовательском компьютере, а следовательно, пользователь может просмотреть или изменить их.
- Можно хранить информацию, не превышающую определённого размера.
- Большее количество информации должно уйти на сервер, что требует больше трафика.
Использование печенек на практике
Создание печеньки.
Определение функции: bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
Создание печеньки
<?php
if (!isset($_COOKIE['Ordering'])) {
setcookie("Ordering", $_POST['ChangeOrdering'], time() + 31536000);
}
?>
Использование печенек
<?php echo (isset($_COOKIE[‘ordering’])) ? $_COOKIE[‘ordering’] : ‘cookie value not set’; ?>
Удаление печенек
<?php setcookie(‘favorite_color’); ?>
Создание пустой печеньки равносильно её удалению, но, конечно, это действие не приведёт к удалению файла с компьютера пользователя. Однако, вы можете установить срок жизни печеньки, по истечению которого файл с информацией будет стёрт с пользовательского компьютера.
Использование сессий на практике
Создание сессии
<?php session_start(); ?>
Этот код должен находиться в верхней части кода, перед ним не должно быть сделано ни какого вывода (echo, print и т.д.). Эта функция проверяет, отправил ли пользовательский браузер печеньки или нет. Если они отправлены, то он загрузит данные из сессии, а если нет, то создаст новый файл сессии на сервере.
Присваиваем значение
<?php $_SESSION[‘first_name’] = ‘Brian’; ?>
Считываем значение сессии
<?php echo $_SESSION[‘first_name’]; ?>
Удаляем (очищаем значение) сессию
<?php unset($_SESSION[‘first_name’]); ?>
Уничтожаем сессию сессию
<?php session_destroy(); ?>
Краткий вывод
Сессии храняться на стороне сервера, а печеньки на стороне пользователя. Все они имеют свои преимущества и недостатки, но однажды, настанет день, когда вы сами поймёте, в какой ситуации лучше использовать сессии, а в какой печеньки.
Рекомендуем посмотреть
| Tweet |
Вот я комбинирую куки и сессии.
Сессиями пользуюсь при авторизации пользователя
Так и надо. «Сидеть» на чём-то одном просто не целесообразно, а иногда даже не безопасно.