PHP Manual

Файли cookie в PHP

11. 09. 2019

> Попередження:** Ця стаття була написана багато років тому і деяка інформація може бути застарілою або невірною. Будь ласка, майте це на увазі при читанні.

Файли cookie - це невеликі фрагменти текстової інформації, що зберігаються в браузері відвідувача веб-сайту. Вони завжди передаються з кожною сторінкою, яка завантажується знову, і можуть бути видалені, змінені та прочитані користувачем у будь-який час, тому вони не дуже добре підходять для зберігання особистої інформації.

Попередження: якщо ваш веб-сайт використовує файли cookie для відстеження користувачів або сторонні доповнення (наприклад, кнопка Facebook like, лічильник трафіку Google analytics, рекламні банери), ви повинні повідомити про це користувача.

"Ще одне зауваження: ваш сайт не повинен містити рекламні або вимірювальні коди, поки ви не отримаєте на це згоду. І це відстій".

-- Девід Грудль

Зчитати значення з файлу cookie

Всі файли cookie зберігаються в суперглобальній змінній $_COOKIE, яка зберігає кожен ключ у вигляді масиву.

Наприклад, якщо ми зберегли в файлі cookie ім'я користувача, який увійшов до системи, під ключем user, ми можемо легко його відновити:

echo $_COOKIE['користувач'];

Зверніть увагу: файли cookie можуть існувати не завжди (наприклад, якщо ви новий користувач). Тому ми завжди повинні перевіряти наявність файлів cookie перед будь-яким розміщенням і пропонувати альтернативне повідомлення про помилку, якщо це необхідно.

if (isset($_COOKIE['користувач']) && $_COOKIE['користувач']) {
echo 'Авторизований користувач:' . $_COOKIE['користувач'];
} else {
echo 'Ніхто не записався.';
}

Отримання всіх доступних файлів cookie

Оскільки всі файли cookie зберігаються в суперглобальній змінній $_COOKIE, їх можна легко перерахувати:

var_dump($_COOKIE);

Або ж пройти весь цикл і отримати всі ключі та значення:

foreach($_COOKIE as $key => $value) {
echo $key . ':' . $value; // вивести ключ та значення
echo '<br>'; // обернути рядок
}

Зберігання значення в файлі cookie

Функція 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:

Související články

1.
3.
Status:
All systems normal.
2024