Работа с cookie через JavaScript
Иногда требуется работа с cookie через JavaScript. Например, cookie может быть альтернативным вариантом обмена данными между PHP и JavaScript. Допустим, JavaScript записывает в cookie пользователя его текущее время на компьютере (то есть его местное время), а PHP эти данные считывает и учитывает смещение относительно серверного времени. А теперь давайте разберём, как работать с cookie через JavaScript.
Единственное, что есть в JavaScript для работы с cookie - это свойство cookie объекта document:
<script type="text/javascript">
alert(document.cookie);
</script>
В результате запуска этого кода выведутся все cookie от данного сайта, причём в определённом формате. Выглядит это примерно так: "name=123; login=456". На что здесь стоит обратить внимание? На то, что все cookie имеют, разумеется, имя и значение, а сами cookie разделены друг с другом точкой с запятой и пробелом.
Зная этот формат, Вы можете легко вытащить значение нужной переменной.
Чтобы добавить через JavaScript ещё одну переменную, надо написать следующий код:
<script type="text/javascript">
document.cookie = "new=5";
</script>
Обратите внимание, что именно "=", а не "+=". В данном случае, Вы не стираете все существующие cookie, а добавляете новую переменную.
Что касается удаления cookie, то здесь можно использовать тот факт, что имеется возможность указать время жизни cookie. И если указать, что она должна была закончиться год назад, то cookie будет немедленно удалена.
Чтобы у Вас было полное представления о работе с cookie через JavaScript, показываю код всех 3 функций для управления cookie, а также пример их использования:
<script type="text/javascript">
function setCookie(name, value) {
document.cookie = name + "=" + value;
}
function getCookie(name) {
var r = document.cookie.match("(^|;) ?" + name + "=([^;]*)(;|$)");
if (r) return r[2];
else return "";
}
function deleteCookie(name) {
var date = new Date(); // Берём текущую дату
date.setTime(date.getTime() - 1); // Возвращаемся в "прошлое"
document.cookie = name += "=; expires=" + date.toGMTString(); // Устанавливаем cookie пустое значение и срок действия до прошедшего уже времени
}
setCookie("firstname", "Вася"); // Устанавливаем cookie
alert(getCookie("firstname")); // Выводим cookie
deleteCookie("firstname"); // Удаляем cookie
alert(getCookie("firstname")); // Убеждаемся, что ничего не осталось
</script>
Вот такую простейшую библиотеку Вы можете использовать при работе с cookie через JavaScript.
-
- Михаил Русаков
Комментарии (3):
Спасибо за эту новость!
Ответить
Проблема с функцией deleteCookie(), если кука создавалась к примеру на странице site_name/page1.html , а удаляется на site_name/page2.html то кука не удаляется функция function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } решает проблему
Ответить
Здравствуйте. Если задать и вывести пару куков (document.write(document.cookie)), то будет результат: "name=value; name2=value2". Скажите, пожалуйста как обращаться до конкретного кука и отдельно до его значения ?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.