Що використовувати session проти cookie - блог Іллі жітенёва
Найважливішою особливістю веб-програмування є можливість безперешкодно передавати дані від однієї сторінки до іншої. Найчастіше цією можливістю користуються для передачі логінів користувачів, повідомлень про помилку, вмісту «візків» в інтернет-магазинах і т.д.
Що «зберегти» дані на сторінці, необхідно використовувати такі глобальні змінних: $ _COOKIE або $ _SESSION. Однак, не дивлячись на те, що в підсумку ви досягнете одну і ту ж мету, ці змінні необхідно використовувати тільки в певних випадках. Метою даної статті я ставлю завдання - дати короткий огляд відмінностей Session (далі «сесії») і Cookie (далі «печеньки». Не треба говорити що я перекладав промт, мені просто дійсно подобатися називати їх «печеньки»), розповісти, коли треба використовувати одне, а коли інше, а також розповісти про їх «плюсах» і «мінуси».
Їх різниця полягає лише в способі зберігання даних: печеньки зберігають дані в браузері користувача, а Сесії на стороні сервера.
Основи сесій (коротко)
У двох словах, сесії - це механізм, який дозволяє однозначно ідентифікувати клієнт (браузер) користувача і створений для цього клієнта файл на стороні сервера, в якому будуть зберігатися необхідні дані.
- Сесії припиняють своє життя при закритті браузера або по закінченню деякого кількості часу. Однак, термін життя сесії можна змінити використовуючи файл настройок - php.ini. Там же, ви можете зробити сесії вічними.
Основи «печенек»
«Печеньки» відправляються на сервер кожен раз, коли ви завантажуєте сторінку. Після створення «печеньки» їй задається термін життя. По закінченню цього терміну - «печеньки» припиняє своє існування.
- «Печенька» може існувати настільки довго, наскільки це необхідно сайту. Вона буде існувати навіть в тому випадку, якщо ви закриєте і знову отруюються браузер.
- Дозволяють використовувати форми аля «входити автоматично».
- Можна зберігати тимчасову інформацію, різні призначені для користувача настройки, наприклад, якщо користувач переглядає список відсортований особливому чином, то можна запам'ятати тип сортування і використовувати його автоматично для всіх списків, що переглядаються цим користувачем.
Використання печенек на практиці
Визначення функції: bool setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
Створення порожній печеньки рівносильно її видалення, але, звичайно, ця дія не призведе до видалення файлу з комп'ютера користувача. Однак, ви можете встановити термін життя печеньки, по закінченню якого файл з інформацією буде стертий з призначеного для користувача комп'ютера.
Використання сесій на практиці
Цей код повинен знаходитися у верхній частині коду, перед ним не повинно бути зроблено жодного виводу (echo, print і т.д.). Ця функція перевіряє, чи відправив призначений для користувача браузер печеньки чи ні. Якщо вони відправлені, то він завантажить дані з сесії, а якщо немає, то створить новий файл сесії на сервері.
Прочитуємо значення сесії
Видаляємо (очищаємо значення) сесію
Знищуємо сесію сесію
короткий висновок
Сесії зберігаються на стороні сервера, а печеньки на стороні користувача. Всі вони мають свої переваги і недоліки, але одного разу, настане день, коли ви самі зрозумієте, в якій ситуації краще використовувати сесії, а в який печеньки.
Доповнення від Artem:
Та й в cookie зберігати потрібно тільки приватні настройки кожного клієнта або інфу, яка може бути втрачена після закриття браузера, або інфу, яка може знадобитися при переході на інший сервер.
Взагалі ж краще всього використовувати клієнтські способи зберігання стану + зберігати стану в базі даних і в крайньому випадку (як паролі) зберігати що-небудь на сервері, чи то пак в сесії. Інакше сервер просто не витримає навантаження.
ще одна відмінність не вказано:
сесія виділяється користувачу і при доступі на сайт 1000+ користувачів в сесії зберігати не настільки важливі дані (типу кошики з покупками) просто не можна. Пам'яті сервака не вистачить.
У той же час, куки, як було сказано, вимагають трафіку. Але трафік більш доступний, ніж обмеження сервера під навантаженням.
І пофіг на клієнтів з повільним инетом, це їхні проблеми. І якщо під них підлаштовуватися, то вони ні коли не будуть паритися про те, що їм пора міняти провайдера.
Та й в cookie зберігати потрібно тільки приватні настройки кожного клієнта або інфу, яка може бути втрачена після закриття браузера, або інфу, яка може знадобитися при переході на інший сервер.
Взагалі ж краще всього використовувати клієнтські способи зберігання стану + зберігати стану в базі даних і в крайньому випадку (як паролі) зберігати що-небудь на сервері, чи то пак в сесії. Інакше сервер просто не витримає навантаження.