Полный цикл в digital

Cookie

Cookie (куки) представляют небольшие наборы данных (не более 4 кБайт), с помощью которых веб-сайт может сохранить на компьютере пользователя любую информацию. С помощью куки можно отслеживать активность пользователя на сайте: залогинен пользователь на сайте или нет, отслеживать историю его визитов и т.д.

Сохранение cookie

Для установки куки на компьютере пользователя используется функция setcookie(). Она должна вызываться перед тем, как будет отправлен ответ пользователю. Эта функция имеет следующее определение:

bool setcookie(string $name, string $value, int $expire, string $path, string $domain, bool $secure, bool $httponly);

Функция setcookie() может принимать следующие параметры:

  1. name имя cookie, которое будет использоваться для доступа к его значению
  2. value значение или содержимое cookie - любой алфавитно-цифровой текст не более 4 кБайт
  3. expire (необязательный параметр) срок действия в секундах, после которого cookie уничтожаются. Если данный параметр не установлен или равен 0, то уничтожение cookie происходит после закрытия браузера. Обычно устанавливается относительно текущего времени, которое можно получить с помощью функции time()
  4. path (необязательный параметр): путь к каталогу на сервере, для которого будут доступны cookie. Если задать "/", cookie будут доступны для всего сайта. Если задать, например, "/mydir/", cookie будут доступны только из каталога /mydir/ и всех его подкаталогов. По умолчанию значением является текущий каталог, в котором устанавливаются cookie
  5. domain (необязательный параметр): задает домен, для которого будут доступны cookie. Если это домен второго уровня, например, localhost.com, то cookie доступны для всего сайта localhost.com, в том числе и для его поддоменов типа blog.localhost.com. Если задан поддомен blog.localhost.com, то cookie доступны только внутри этого поддомена
  6. secure (необязательный параметр): указывает на то, что значение cookie должно передаваться по протоколу HTTPS. Если задано true, cookie от клиента будет передано на сервер, только если установлено защищенное соединение. По умолчанию равно false.
  7. httponly (необязательный параметр): если равно true, cookie будут доступны только через http протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, например, JavaScript. По умолчанию параметр равен false

Сохраним cookie:

<?
$name = "Tom";
$age = 36;
setcookie("name", $name);
setcookie("age", $age, time() + 3600);  // срок действия - 1 час (3600 секунд)
echo "Куки установлены";

Здесь устанавливаются две куки: name и age. Первая куки уничтожается после закрытия браузера, а вторая - через 3600 секунд, то есть через час.

При необходимости мы можем увидеть сохраненные куки в браузере с помощью инструментов разработчика. Например, вид куки в Google Chrome:

Куки cookie в PHP и setcookie

В cookie можно сохранить любую информацию, но не стоит сохранять важные с точки зрения безопасности данные, например, пароли. А если и сохранять какую-то важную информацию, то следует хранить ее в зашифрованном виде.

<?
if (isset($_COOKIE["name"])) echo "Name: " . $_COOKIE["name"] . "<br>";
if (isset($_COOKIE["age"])) echo "Age: " . $_COOKIE["age"] . "<br>";

Получение cookie

Чтобы получить cookie, можно использовать глобальный ассоциативный массив $_COOKIE, например, $_COOKIE["name"]. Так, получим ранее сохраненные куки:

<?
if (isset($_COOKIE["name"])) echo "Name: " . $_COOKIE["name"] . "<br>";
if (isset($_COOKIE["age"])) echo "Age: " . $_COOKIE["age"] . "<br>";

Сохранение массивов в cookie

Сохранение в куки массивов имеет некоторые особенности. Например, сохраним следующий массив:

setcookie("lang[1]", "PHP");
setcookie("lang[2]", "C#");
setcookie("lang[3]", "Java");

Теперь получим его и выведем на страницу:

<?
if (isset($_COOKIE["lang"])) {
foreach ($_COOKIE["lang"] as $name => $value) {
$name = htmlspecialchars($name);
$value = htmlspecialchars($value);
echo "$name. $value <br/>";
}
}

Удаление cookie

Для удаления cookie достаточно в качестве срока действия указать какое-либо время в прошлом:

setcookie ("name", "", time() - 3600);
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг