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