Куки php, cookie
Cookies (далее просто куки) - это данные небольшого объема (текстовые фрагменты), размещенные на стороне клиента. Куки сохраняются на машине клиента и отправляются веб-серверу с каждым новым запросом.
Чтобы создать Cookie, необходимо задействовать функцию setcookie()
. Данной функции требуется передать следующие параметры:
setcookie(имя, значение, срок_хранения, путь, домен, защита)
![cookie php](/images/cookies_php/a.jpg)
- Имя
- – имя Cookie, по этому имени вы будете обращаться к сохраненным данным
- Значение
- – значение Cookie (необязательный параметр)
- Срок хранения
- – срок жизни Cookie в секундах (необязательный параметр)
- Путь
- – путь Cookie (необязательный параметр). По умолчанию: / (куки доступен из всех каталогов)
- Домен
- – домен Cookie (необязательный параметр). Значение www.dnzl.ru сделает доступным куки только для поддомена www сайта dnzl.ru. Чтобы обеспечить доступность cookie всем поддоменам (www.dnzl.ru и dnzl.ru), следует использовать значение .dnzl.ru.
- Защита
- – если true, то куки передается по защищенному соединению (SSL) (необязательный параметр)
Давайте создадим какой-нибудь куки (cookie).
PHP
<?php
// setcookie(name, value, expire, path, domain);
$expire = time() + 60 * 60 * 24 * 30;
// expires in one month
setcookie('visited','yes',$expire);
?>
Вышеописанный cookie обозначает: мы устанавливаем cookie с именем visited
. Значение переменной visited
– yes
(то есть в дальнейшем данный пользователь будет идентифицироваться как – ‘он сайт уже посещал’). Наш куки будет работать в течение месяца (60 * 60 * 24 * 30)
. Вы можете видеть, что путь и домен не указаны, поэтому они будут установлены автоматически. Следует отметить: если вы не установите время действия куки, то куки будет действовать в течение текущей сессии. Хотя данный сценарий и установит куки, но сервер не сможет прочитать его, пока пользователь не перезагрузит текущую страницу или не перейдет к другой странице.
Так как функций setcookie устанавливает HTTP-заголовки, то до вывода данной функции ваш сценарий не должен ничего выводить в браузере, включая пробелы (пробельные символы интерпретируются как HTML-код).
Чтобы обратиться к куки, можно использовать массив $_COOKIE
:
PHP
<?php
// выводим куку с именем "visited"
$the_cookie = $_COOKIE['visited'];
echo $the_cookie;
// показать все куки
print_r($_COOKIE);
?>
Чтобы удалить cookie достаточно измените переменную expire
следующим образом:
PHP
<?php
// переменной expire назначаем дату, которая находится в прошлом
$expire = time() - 3600;
setcookie('visited', '', $expire);
?>
Куки часто используют в голосованиях: когда пользователь голосует, файл обработчик назначает cookie с информацией о том, что пользователь уже голосовал. Затем при новом заходе на сайт пользователь не имеет возможности голосовать повторно (куки ведь ему уже назначено), хотя такой метод довольно легко обойти.
Сервер ставит куку
![Сервер ставит куку](/images/cookies/set_cookie.png)
Браузер передает куку
Зависит от времени жизни куки
![Браузер передает куку](/images/cookies/browser_cookie.png)
Заметки (замечания) по кукам
Куки посылаются туда-сюда в заголовках.
‘Туда’ или в браузер кука посылается посредством – setcookie
(установили), ‘обратно’ cookie (обратиться к кукам можно посредством массива $_COOKIE
).
Сессионые(временные) куки: под сессией понимается то время, пока открыт браузер пользователя; как только браузер закроют, сессионная кука удалится. Если в setcookie
не указать время - это сессионная кука (пока открыт браузер).
Куки посылаются в заголовках, поэтому они должны быть до любого вывода.
Сейчас куки используются в основном для отслеживания посещаемости(то есть не массово) и т.д.
Следующая сессионая кука считает количество посещения и выводит дату последнего визита.
PHP
if(isset($_COOKIE["count"]))
{
setcookie('count',(int) ++$_COOKIE["count"]);
}
else
{
setcookie('count',0);
}
//----------------------------------------------------------
if(isset($_COOKIE["data"]))
{
$data = date('Y - F - d - H - i - s');
setcookie('data', $data );
}
else
{
setcookie('data', date('Y - F - d - H - i - s') );
}
PHP
$count = isset($_COOKIE["count"]) ? $_COOKIE["count"] : "0";
$data = isset($_COOKIE['data'])?$_COOKIE['data']:'не было';
echo "Количество посещений: ".$count."<br/>Время последнего посещения:".$data;
//Количество посещений: 2
//Время последнего посещения:2013 - July - 31 - 12 - 42 - 09
Комментарии к статье
Вот про куки у меня написано более подробно на моем сайте http://ciberfox.ru
Привет. Подскажи, плз, как сделать так, чтобы информация введенная или выбранная пользователем на странице сохранялась в куках хотя бы на день? Например: в интернет-магазине человек выбирает определенный товар, добавляет его в корзину и закрывает браузер. Затем снова открывает сайт интернет-магазина и у него загружается последняя посещенная им страница и сохраняется товар в корзине. Как это сделать?
очень полезная информация, спасибо