HTTP является протоколом-бомжом, что значит, что каждый запрос к веб-сайту является автономным, т.е. не связанным с предыдущим запросом, и не хранящим какую либо информацию.
Но эта простота и является также одной из причин его широкого внедрения в Интернете.
Однако, существует способ сохранять информацию между запросами в виде cookies. Таким образом, у вас появится эффективное управление сессиями и данными.
Есть два способа работы с cookies – на стороне сервера (PHP, ASP и т.д.) и на стороне клиента (JavaScript).
В этой статье мы рассмотрим, как можно управлять cookies с помощью PHP и JavaScript.
Cookies и PHP
Запись cookies
Чтобы создать cookie в PHP, вы должны использовать функцию setcookie. Она принимает ряд параметров (все, кроме первого, являются необязательными и могут быть опущены):
1 2 3 4 5 6 7 8 |
setcookie( 'pageVisits', // Имя cookie, обязательно $visited, // Значение cookie time()+7*24*60*60, // Срок действия '/', // Каталог 'demo.tutorialzine.com' // Домен ); |
Если вы передаете 0, как срок действия (по умолчанию), cookie будет потерян при перезагрузке браузера. Параметр “/” указывает, что cookie будет доступен для всех директорий домена (при желании, можно связать cookie с одним каталогом, например с /admin/ в качестве параметра).
Есть два дополнительных параметра, которые вы могли бы использовать в функции, но, которые здесь не приводятся. Они могут принимать, только булевые значения — истина или ложь.
Первый означает, что cookie будет передан только через защищенное соединение HTTPS, а второй, что cookie не будет доступен через JavaScript (введено в PHP 5.2).
Для большинства практических целей, вам потребуются только первые четыре параметра, остальные можно пропустить.
Чтение cookies
Чтение cookie с помощью PHP намного проще. Все cookies, которые были переданы скрипту, доступны в суперглобальном массиве $_COOKIE
.
В нашем примере, чтобы прочитать cookie, мы написали следующий код:
1 2 |
$visits = (int)$_COOKIE['pageVisits']+1; echo "You visited this site: ".$visits." times"; |
Стоит отметить, что запись cookies через setcookie доступна в массиве $ _COOKIE
на next page load.
Запомните это.
Удаление cookies
Чтобы удалить cookies, просто используйте функцию setcookie с параметром срока действия прошедшего времени.
1 2 3 4 5 6 7 |
setcookie( 'pageVisits', $visited, time()-7*24*60*60, //Одна неделя назад и cookie будет удален. '/', 'demo.tutorialzine.com' ); |
Cookies и jQuery
Чтобы использовать cookies с jQuery, вам необходим специальный .
Запись cookies
Запись cookies с плагином Cookie интуитивно понятна:
1 2 3 4 5 6 7 |
$(document).ready(function(){ $.cookie("kittens","Seven Kittens"); $.cookie("demoCookie",text,{expires: 7, path: '/', domain: 'demo.tutorialzine.com'}); }); |
Чтение cookies
Чтение cookie еще проще. Просто вызовите функцию $.cookie()
с параметром имени, значение cookie будет возвращено:
1 2 3 4 5 |
$(document).ready(function(){ var str = $.cookie("kittens"); }); |
Удаление cookies
Чтобы удалить куки, снова используйте функцию $.cookie()
, но в качестве второго параметра укажите значение null
.
1 2 3 4 5 |
$(document).ready(function(){ var str = $.cookie("kittens",null); }); |
Заключение
В этой статье мы рассмотрели создание и чтение данных cookie. Стоит отметить, что Вы не должны хранить в cookies какой-либо конфиденциальной информации, такой как, имена пользователей и пароли, так как они передаются, как обычные заголовки на каждой странице, и могут быть легко прочитаны злоумышленниками.
Однако, благодаря этой простой технологии, при надлежащих мерах предосторожности, вы можете получить большую интерактивность сайта.
Нужно удалить куки с сайта, но есть одна загвоздка
Находясь на сайтеsite.ru нужно удалить куки которые записаны в как это сделать?
если с текущего то просто
$.cookie («avtor», null);
а как же удалить куки с директории? как уточнить откуда удалять???
Как же реализовать?
Сергей, вы кажется не поняли, где именно хранятся куки. Они хранятся на стороне клиента, просто в самом куки прописано, где он должен действовать. Так что $.cookie («avtor», null); вполне применяем.
Если поставить куку на site.ru/dir1 $.cookie («avtor», 'значение');
то удалить ее с помощью $.cookie («avtor», null); со страницы site.ru/dir2 не получатся!
если поставить {path:'/'}, — то ее не видно на site.ru/dir2
что нужно сделать, как ее удалить с другого урла ?
отличная статья. автору респект