НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

JS Підручник

JS Старт JS Інтро JS Установка JS Виведення JS Інструкції JS Синтаксис JS Коментарі JS Змінні JS Ключове слово Let JS Ключове слово Const JS Оператори JS Арифметичні JS Присвоєння JS Типи даних JS Функції JS Об’єкти JS Події JS Рядки JS Рядкові методи JS Рядковий пошук JS Рядкові шаблони JS Числа JS Числові методи JS Масиви JS Методи масиву JS Сортування масиву JS Ітерація масиву JS Масив Const JS Дати JS Формати дат JS Методи отримання дат JS Методи встановлення дат JS Математичні JS Рандомні JS Булеві JS Порівняння JS Умови JS Switch JS Цикл For JS Цикл For In JS Цикл For Of JS Цикл While JS Break & Continue JS Ітерації JS Сети (Набори) JS Мапи JS Typeof JS Перетворення типів JS Побітові JS Регулярні вирази JS Помилки JS Область дії JS Хостинг JS Use Strict JS Ключове слово this JS Функція стрілки JS Класи JS Модулі JS JSON JS Відладка JS Гід по стилю JS Кращі практики JS Поширені помилки JS Продуктивність JS Зарезервовані слова

JS Версії

JS Версії JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE/Edge JS Історія

JS Об’єкти

Визначення об’єктів Властивості об’єкта Методи об’єкта Відображення об’єкта Доступ до об’єктів Конструктори об’єктів Прототипи об’єктів Ітеровані об’єкти Сети (Набори) об’єктів Мапи (Карти) об’єктів Довідник об’єктів

JS Функції

Визначення функції Параметри функції Виклик функції Функція call() Функція apply() Функція bind() Закриття функції

JS Класи

Класи. Інтро Успадкування класу Статичні методи

JS Асинхроний

Зворотні виклики Асинхроний Проміси Async/Await

JS HTML DOM

DOM Вступ DOM Методи DOM Документ DOM Елементи DOM HTML DOM Форми DOM CSS DOM Анімація DOM Події DOM Слухач подій DOM Навігація DOM Вузли DOM HTMLCollection DOM NodeList

JS Браузер BOM

JS Вікно JS Скрін JS Локація JS Історія JS Навігатор JS Виринаюче сповіщення JS Таймінг JS Куки

JS Веб API

Веб API Вступ Веб-форми API Веб-історія API Веб-сховище API Веб-воркер API Веб-виборка API Веб-геолокація API

JS AJAX

AJAX Вступ AJAX XMLHttp AJAX Запит AJAX Відгук AJAX XML Файл AJAX PHP AJAX ASP AJAX База даних AJAX Додатки AJAX Приклади

JS JSON

JSON Вступ JSON Синтаксис JSON та XML JSON Типи даних JSON Аналіз JSON Stringify JSON Об’єкти JSON Масиви JSON Сервер JSON PHP JSON HTML JSON JSONP

JS та jQuery

jQuery Селектори jQuery HTML jQuery CSS jQuery DOM

JS Приклади

JS Приклади JS HTML DOM JS HTML Input JS HTML Об’єкти JS HTML Події JS Браузер JS Редактор JS Вправи JS Вікторина JS Сертифікат

JS Довідники

JavaScript Об’єкти HTML DOM Об’єкти

JavaScript. Уроки W3Schools для початківців українською мовою

En

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:

  1. Функція для встановлення значення cookie
  2. Функція для отримання значення cookie
  3. Функція для перевірки значення 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() під час завантаження сторінки.