JavaScript Cookie / Куки
Файли cookie / куки дозволяють зберігати інформацію про користувача на вебсторінках.
Що таке файли cookie?
Файли cookie / куки — це дані, які зберігаються у невеликих текстових файлах на вашому комп’ютері.
Коли вебсервер надсилає вебсторінку до браузера, з’єднання вимикається, і сервер забуває все про користувача.
Файли cookie були винайдені для вирішення проблеми "як запам’ятати інформацію про користувача":
- Коли користувач відвідує вебсторінку, його/її ім’я може зберігатися у файлі cookie.
- Наступного разу, коли користувач відвідає сторінку, файл cookie "запам’ятовує" його/її ім’я.
Файли cookie зберігаються в парах ім’я-значення, наприклад:
username = John Doe
Коли браузер запитує веб-сторінку від сервера, файли cookie, що належать сторінці, додаються до запиту. Таким чином сервер отримує необхідні дані для "запам'ятовування" інформація про користувачів.
Жоден із наведених нижче прикладів не працюватиме, якщо у вашому браузері вимкнено підтримку локальних файлів cookie.
Створити файл cookie за допомогою JavaScript
JavaScript може створювати, читати та видаляти файли cookie за допомогою властивості document.cookie
.
За допомогою JavaScript файл cookie можна створити таким чином:
document.cookie = "username=John Doe";
Ви також можете додати термін дії (за часом UTC). За замовчуванням файл cookie видаляється, коли браузер закривається:
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC";
За допомогою параметра шляху ви можете повідомити браузеру, до якого шляху належить файл cookie. За замовчуванням файл cookie належить поточній сторінці.
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";
Читати файли cookie за допомогою JavaScript
За допомогою JavaScript файли cookie можна читати таким чином:
let x = document.cookie;
document.cookie
поверне всі файли cookie в одному рядку приблизно так: cookie1=value; cookie2=value; cookie3=value;
Змінити файл cookie за допомогою JavaScript
За допомогою JavaScript ви можете змінити файл cookie так само як ви його створюєте:
document.cookie = "username=John Smith; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";
Старий файл cookie перезаписано.
Видалити файл cookie за допомогою JavaScript
Видалити файл cookie дуже просто.
Вам не потрібно вказувати значення файлу cookie, коли ви видаляєте файл cookie.
Просто встановіть параметр expires (закінчується) на минулу дату:
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
Ви повинні визначити шлях файлу cookie, щоб переконатися, що ви видалите правильний файл cookie.
Деякі браузери не дозволяють видалити файл cookie, якщо не вказати шлях.
Рядок файлу cookie
Властивість document.cookie
виглядає як звичайний текстовий рядок. Але це не так.
Навіть якщо ви запишете цілий рядок cookie в document.cookie, коли ви знову прочитаєте його, ви побачите лише пару ім’я-значення.
Якщо ви встановлюєте новий файл cookie, старі файли cookie не перезаписуються. Новий файл cookie додається до document.cookie, тому, якщо ви знову прочитаєте document.cookie, ви отримаєте щось на зразок:
cookie1 = значення; cookie2 = значення;
Якщо ви хочете знайти значення одного вказаного файлу cookie, ви повинні написати функцію JavaScript, яка шукатиме значення файлу cookie в рядку файлів cookie.
Приклад файлу cookie JavaScript
У наступному прикладі ми створимо файл cookie, який зберігає ім’я відвідувача.
Коли відвідувач вперше переходить на вебсторінку, йому/їй буде запропоновано ввести своє ім’я. Потім ім’я зберігається в файлі cookie.
Наступного разу, коли відвідувач перейде на ту саму сторінку, він/вона отримає привітальне повідомлення.
Для прикладу ми створимо 3 функції JavaScript:
- Функція для встановлення значення cookie
- Функція для отримання значення cookie
- Функція для перевірки значення cookie
Функція для встановлення файлу cookie
Спочатку ми створюємо function
, яка зберігає ім’я відвідувача у змінній cookie:
Приклад
function setCookie(cname, cvalue, exdays) {
const d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
let expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
Пояснення прикладу:
Параметрами функції вище є ім’я файлу cookie (cname), значення файлу cookie (cvalue) і кількість днів до закінчення терміну дії файлу cookie (exdays).
Функція встановлює файл cookie шляхом додавання імені файлу cookie, значення файлу cookie та рядка терміну дії.
Функція для отримання файлів cookie
Потім ми створюємо function
, яка повертає значення вказаного файлу cookie:
Приклад
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
Пояснення функції:
Візьміть назву cookie як параметр (cname).
Створіть змінну (ім’я) із текстом для пошуку (cname + "=").
Декодуйте рядок cookie для обробки файлів cookie зі спеціальними символами, напр. '$'
Розділіть document.cookie на крапки з комою в масив під назвою ca (ca = decodedCookie.split(';')).
Переберіть масив ca (i = 0; i < ca.length; i++) і прочитайте кожне значення c = ca[i]).
Якщо файл cookie знайдено (c.indexOf(name) == 0), поверніть значення файлу cookie (c.substring(name.length, c.length).
Якщо файл cookie не знайдено, поверніть "".
Функція для перевірки файлів cookie
Нарешті, ми створюємо функцію, яка перевіряє, чи встановлено файл cookie.
Якщо файл cookie встановлено, він відображатиме привітання.
Якщо файл cookie не встановлено, він відобразить вікно підказки із запитом на ім’я користувача та зберігатиме файл cookie імені користувача протягом 365 днів, викликавши функцію setCookie
:
Приклад
function checkCookie() {
let username = getCookie("username");
if (username != "") {
alert("Welcome again " + username);
} else {
username = prompt("Please enter your name:", "");
if (username != "" && username != null) {
setCookie("username", username, 365);
}
}
}
Тепер все разом
Приклад
function setCookie(cname, cvalue, exdays) {
const d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
let expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
let name = cname + "=";
let ca = document.cookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
let user = getCookie("username");
if (user != "") {
alert("Welcome again " + user);
} else {
user = prompt("Please enter your name:", "");
if (user != "" && user != null) {
setCookie("username", user, 365);
}
}
}
Спробуйте самі »
Наведений вище приклад запускає функцію checkCookie()
під час завантаження сторінки.