> Попередження:** Ця стаття була написана багато років тому і деяка інформація може бути застарілою або невірною. Будь ласка, майте це на увазі при читанні.
Файли cookie - це невеликі фрагменти текстової інформації, що зберігаються в браузері відвідувача веб-сайту. Вони завжди передаються з кожною сторінкою, яка завантажується знову, і можуть бути видалені, змінені та прочитані користувачем у будь-який час, тому вони не дуже добре підходять для зберігання особистої інформації.
Попередження: якщо ваш веб-сайт використовує файли cookie для відстеження користувачів або сторонні доповнення (наприклад, кнопка Facebook like, лічильник трафіку Google analytics, рекламні банери), ви повинні повідомити про це користувача.
"Ще одне зауваження: ваш сайт не повинен містити рекламні або вимірювальні коди, поки ви не отримаєте на це згоду. І це відстій".
-- Девід Грудль
Всі файли cookie зберігаються в суперглобальній змінній $_COOKIE
, яка зберігає кожен ключ у вигляді масиву.
Наприклад, якщо ми зберегли в файлі cookie ім'я користувача, який увійшов до системи, під ключем user
, ми можемо легко його відновити:
echo $_COOKIE['користувач'];
Зверніть увагу: файли cookie можуть існувати не завжди (наприклад, якщо ви новий користувач). Тому ми завжди повинні перевіряти наявність файлів cookie перед будь-яким розміщенням і пропонувати альтернативне повідомлення про помилку, якщо це необхідно.
if (isset($_COOKIE['користувач']) && $_COOKIE['користувач']) {echo 'Авторизований користувач:' . $_COOKIE['користувач'];} else {echo 'Ніхто не записався.';}
Оскільки всі файли cookie зберігаються в суперглобальній змінній $_COOKIE
, їх можна легко перерахувати:
var_dump($_COOKIE);
Або ж пройти весь цикл і отримати всі ключі та значення:
foreach($_COOKIE as $key => $value) {echo $key . ':' . $value; // вивести ключ та значенняecho '<br>'; // обернути рядок}
Функція setcookie()
використовується для збереження даних у файлах cookie.
Перший параметр - це ключ cookie, який використовується для його зчитування з поля $_COOKIE
, а другий параметр - самі дані у вигляді рядка.
За допомогою третього параметра ми можемо (за бажанням) встановити термін дії, протягом якого файл cookie буде доступний. Час доступності задається у вигляді timestamp, тому якщо ми хочемо встановити cookie з терміном дії 1 годину з цього моменту, нам достатньо написати time() + 3600
.
$data = 'Деякий контент ми хочемо зберігати.';setcookie('TestCookie', $data);setcookie('TestCookie', $data, time() + 3600);
Файли cookie не підходять для зберігання великих даних (браузери зазвичай дозволяють зберігати лише 4 кБ і максимум 20 файлів cookie, розмір також включає в себе імена файлів cookie, налаштування терміну дії і т.д.).
Краще зберігати на сервері більші дані і просто ставити в куки ідентифікатор, за яким ми зможемо визначити, якому користувачеві він належить. Цей метод називається $_SESSION
і розглядається в окремій статті.
Якщо вам не обов'язково зберігати дані завжди синхронно на сервері, ви можете використовувати localstorage сховище, доступне в javascript. Його ємність складає близько мегабайта, а термін зберігання даних не обмежений.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | uk