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

Сохранение cookie

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

1

2

bool setcookie(string $name, string $value, int $expire,

    string $path, string $domain, bool $secure, bool $httponly);

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

  • name: имя cookie, которое будет использоваться для доступа к его значению

  • value: значение или содержимое cookie - любой алфавитно-цифровой текст не более 4 кБайт

  • expire (необязательный параметр): срок действия, после которого cookie уничтожаются. Если данный параметр не установлен или равен 0, то уничтожение cookie происходит после закрытия браузера.

  • path (необязательный параметр): путь к каталогу на сервере, для которого будут доступны cookie. Если задать '/', cookie будут доступны для всего сайта. Если задать, например, '/mydir/', cookie будут доступны только из каталога /mydir/' и всех его подкаталогов. По умолчанию значением является текущий каталог, в котором устанавливаются cookie.

  • domain (необязательный параметр): задает домен, для которого будут доступны cookie. Если это домен второго уровня, например, localhost.com, то cookie доступны для всего сайта localhost.com, в том числе и для его поддоменов типа blog.localhost.com.

    Если задан поддомен blog.localhost.com, то cookie доступны только внутри этого поддомена.

  • secure (необязательный параметр): указывает на то, что значение cookie должно передаваться по протоколу HTTPS. Если задано true, cookie от клиента будет передано на сервер, только если установлено защищенное соединение. По умолчанию равно false.

  • httponly (необязательный параметр): если равно true, cookie будут доступны только через http протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, например, JavaScript. По умолчанию параметр равен false

Сохраним cookie:

1

2

3

4

$value1 = "Сингапур";

$value2 = "китайский";

setcookie("city", $value1);

setcookie("language", $value2, time()+3600);  // срок действия 1 час

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

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

Получение cookie

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

1

2

3

if (isset($_COOKIE['city'])) echo "Город: " . $_COOKIE["city"] . "<br>";

 

if (isset($_COOKIE['language'])) echo "Язык: " . $_COOKIE["language"];

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

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

1

2

3

setcookie("lan[1]", "PHP");

setcookie("lan[2]", "C#");

setcookie("lan[3]", "Java");

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

1

2

3

4

5

6

7

if (isset($_COOKIE['lan'])) {

    foreach ($_COOKIE['lan'] as $name => $value) {

        $name = htmlspecialchars($name);

        $value = htmlspecialchars($value);

        echo "$name. $value <br />";

    }

}

Удаление cookie

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

1

setcookie ("city", "", time() - 3600);