Куки php, cookie
Cookies (далее просто куки) - это данные небольшого объема (текстовые фрагменты), размещенные на стороне клиента. Куки сохраняются на машине клиента и отправляются веб-серверу с каждым новым запросом.
Чтобы создать Cookie, необходимо задействовать функцию setcookie()
. Данной функции требуется передать следующие параметры:
setcookie(имя, значение, срок_хранения, путь, домен, защита)
- Имя
- – имя 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 с информацией о том, что пользователь уже голосовал. Затем при новом заходе на сайт пользователь не имеет возможности голосовать повторно (куки ведь ему уже назначено), хотя такой метод довольно легко обойти.
Сервер ставит куку
Браузер передает куку
Зависит от времени жизни куки
Заметки (замечания) по кукам
Куки посылаются туда-сюда в заголовках.
‘Туда’ или в браузер кука посылается посредством – 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
Привет. Подскажи, плз, как сделать так, чтобы информация введенная или выбранная пользователем на странице сохранялась в куках хотя бы на день? Например: в интернет-магазине человек выбирает определенный товар, добавляет его в корзину и закрывает браузер. Затем снова открывает сайт интернет-магазина и у него загружается последняя посещенная им страница и сохраняется товар в корзине. Как это сделать?
очень полезная информация, спасибо