Поиск…


Вступление

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

Синтаксис

  • bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

параметры

параметр подробно
название Имя файла cookie. Это также ключ, который вы можете использовать для извлечения значения из супер-глобального $_COOKIE . Это единственный требуемый параметр
значение Значение для хранения в файле cookie. Эти данные доступны для браузера, поэтому не храните здесь ничего чувствительного.
истекать Временная метка Unix, представляющая время истечения срока действия файла cookie. Если установлено равным нулю, файл cookie истекает в конце сеанса. Если установлено на меньшее число, чем текущая временная метка Unix, файл cookie истекает немедленно.
дорожка Объем файла cookie. Если установлено значение / cookie будет доступен во всем домене. Если установлено значение /some-path/ cookie будет доступен только в этом пути и потомках этого пути. По умолчанию используется текущий путь к файлу, в котором установлен файл cookie.
домен Домен или субдомен cookie доступен. Если установить на пустой домен stackoverflow.com cookie будет доступен для этого домена и всех поддоменов. Если он установлен в поддомену meta.stackoverflow.com cookie будет доступен только в этом поддомене и во всех поддоменах.
безопасный Если установлено значение TRUE cookie будет установлен только в том случае, если между клиентом и сервером существует безопасное соединение HTTPS.
HttpOnly Указывает, что файл cookie должен быть доступен только по протоколу HTTP / S и не должен быть доступен для языков сценариев на стороне клиента, таких как JavaScript. Доступно только в PHP 5.2 или новее.

замечания

Стоит отметить, что простая функция setcookie не просто помещает данные в $_COOKIE массив $_COOKIE .

Например, нет смысла делать:

setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value

Значение еще не указано, пока не загрузится следующая страница. Функция setcookie просто говорит: « setcookie следующего http-соединения скажите клиенту (браузеру) установить этот файл cookie ». Затем, когда заголовки отправляются в браузер, они содержат этот заголовок файла cookie. Затем браузер проверяет, еще ли истек ли файл cookie, а если нет, то в HTTP-запросе он отправляет файл cookie на сервер, и именно тогда PHP получает его и помещает содержимое в массив $_COOKIE .

setcookie() cookie устанавливается с помощью функции setcookie() . Поскольку файлы cookie являются частью HTTP-заголовка, вы должны установить все файлы cookie перед отправкой любого вывода в браузер.

Пример:

setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params

Описание:

  • Создает файл cookie с именем user
  • (Необязательно) Значение файла cookie - это Tom
  • (Дополнительно) Cookie истечет через 1 день (86400 секунд)
  • (Дополнительно) Cookie доступен на всем веб-сайте /
  • (Необязательно) Cookie отправляется только через HTTPS
  • (Необязательно) Cookie недоступен для скриптовых языков, таких как JavaScript

Созданный или измененный файл cookie может быть доступен только при последующих запросах (где path и domain совпадают), поскольку $_COOKIE не заполняется новыми данными немедленно.

Получить и вывести имя user cookie

Значение cookie можно получить с помощью глобальной переменной $_COOKIE . Например, если у нас есть файл cookie с именем user мы можем его восстановить так

echo $_COOKIE['user'];

Значение cookie может быть изменено путем сброса файла cookie

setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already

Куки-файлы являются частью HTTP-заголовка, поэтому необходимо setcookie() , прежде чем какой-либо вывод будет отправлен в браузер.

При изменении файла cookie убедитесь, что параметры path и domain setcookie() соответствуют существующему файлу cookie или будет создан новый файл cookie.

Часть значения файла cookie будет автоматически указана в urlencoded при отправке файла cookie, и когда он будет получен, он будет автоматически декодирован и назначен переменной с тем же именем, что и имя файла cookie

Используйте функцию isset() для $_COOKIE переменной $_COOKIE чтобы проверить, установлен ли файл cookie.

Пример:

// PHP <7.0
if (isset($_COOKIE['user'])) {
    // true, cookie is set
    echo 'User is ' . $_COOKIE['user'];
else {
    // false, cookie is not set
    echo 'User is not logged in';
}

// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in'; 

Удаление куки-файлов

Чтобы удалить файл cookie, установите временную метку истечения времени в прошлое. Это вызывает механизм удаления браузера:

setcookie('user', '', time() - 3600, '/');

При удалении файла cookie убедитесь, что параметры path и domain setcookie() соответствуют файлу cookie, который вы пытаетесь удалить, или будет создан новый файл cookie, который истекает немедленно.

Также неплохо $_COOKIE значение $_COOKIE в случае использования текущей страницы:

unset($_COOKIE['user']);


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow