Php-файлы cookie — настройка, доступ и удаление cookie

Введение:

Откуда возник термин «cookie» никто достоверно не знает, хотя считается, что во времена зарождения Unix-систем где-то использовалось словосочетание Magic Cookies. Имелись в виду «квитанции» (token, ticket), которыми обменивались программы.

Cookie является решением одной из наследственных проблем HTTP протокола (HyperText Transfer Protocol). Эта проблема заключается в непостоянстве соединения между клиентом и сервером, как при FTP или Telnet сессии, т.е. для каждого документа (или файла) при передаче по HTTP протоколу посылается отдельный запрос. Включение cookie в HTTP протокол дало частичное решение этой проблемы. Иначе говоря, транзакция завершается после того, как браузер сделал запрос, а сервер выдал соответствующий ответ. Сразу после этого сервер «забывает» о пользователе и каждый следующий запрос того же пользователя считает новым пользователем.

Используя cookie, можно эмулировать сессию по HTTP протоколу. Коротко принцип эмуляции сессии таков: на первом запросе выдается соотвествующее значение cookie, а при каждом последующем запросе это значение читается из переменной окружения HTTP_COOKIE и соответствующим образом обрабатывается.

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

Итак,приступим к практике:

Простой пример использования

В данном примере мы сделали страницу, которая запрашивает Ваше имя при первом посещении, затем она сохраняет Ваше имя в куки и показывает его при следующих посещениях.

Откройте страницу в новом окне. При первом посещении она попросит ввести имя и сохранит его в куки. Если Вы посетите страницу еще раз, она отобразит на экране введенное имя из куки.

Для куки задаем срок хранения в 1 год от текущей даты, это означает, что браузер сохранит Ваше имя даже если Вы закроете его.

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

Вы можете посмотреть код страницы в браузере, выбрав функцию просмотра исходного кода. Здесь приводится основная часть кода:

Удаление Cookie с помощью PHP

Официально, чтобы удалить cookie, вы должны вызвать setcookie() только с аргументом name, но это не всегда хорошо работает, и на него нельзя положиться. Безопаснее всего установить cookie с истекшей датой —

<?php
   setcookie( "name", "", time()- 60, "/","", 0);
   setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
   <head>
      <title>Deleting Cookies with PHP</title>
   </head>
   <body>
      <?php echo "Deleted Cookies" ?>
   </body>
</html>

Новые статьи

  • Ошибки в PHP и обработка исключений — 12/04/2018 19:21
  • Регулярные выражения PHP -Кванторы, мета-символы и модификаторы — 12/04/2018 19:20
  • Сеансы PHP — Запуск, уничтожение, сессии без файлов cookie — 12/04/2018 19:20

Предыдущие статьи

  • Файлы PHP и ввод-вывод — открытие, чтение, запись и закрытие файла — 12/04/2018 19:18
  • Методы PHP GET и POST, переменная $_REQUEST — 12/04/2018 19:17
  • Загрузка файлов PHP — Создание формы и сценария загрузки — 12/04/2018 19:16
  • Объектно-ориентированное программирование в PHP — 12/04/2018 19:15
  • Включение файла в PHP — Функция include и require — 12/04/2018 19:14
  • Предопределенные переменные PHP — Суперглобальные массивы и переменные сервера — 12/04/2018 19:13
  • Функции с параметрами, динамические вызовы, создание функции в PHP — 12/04/2018 19:12
  • Типы операторов PHP — категории, присваивания, логические операторы — 12/04/2018 19:11
  • Типы циклов PHP for, foreach, continue, break, do-while — 12/04/2018 19:10
  • Принятие решений PHP — ElseIf Switch — 12/04/2018 19:09
  • Типы констант PHP — Различия между константами и переменными — 12/04/2018 19:08
  • Массивы PHP: Многомерные, ассоциативные и числовые массивы — 12/04/2018 19:07
  • Типы переменных, область и имена переменных в PHP — 12/04/2018 19:06
  • Строки в PHP, strpos, strlen, конкатенация строк — 12/04/2018 19:05
  • Дата и время, получение, преобразование времени в PHP — 12/04/2018 19:03
  • Обзор синтаксиса, канонические теги, комментирование PHP-кода — 12/04/2018 19:02
  • Введение в PHP. Общее использование, характеристики PHP — 12/04/2018 19:01

Как задать Cookie теория кратко:

Чтобы задать Cookie, нужно иметь саму форму для отправки данных, в форме должен быть тег input с типом checkbox, рядом с которым чаще всего пишут запомнить меня , после нажатия котрого будет понятно, что человек хочет, чтобы Cookie были установлены!

Код формы для отправки согласия на установку Cookie:

<form method=»post» action=»»>

<input type=»checkbox» name=»test_2″> запомнить меня

<input type=»submit» name=»submit» value=»submit»>

</form>

Форма для отправки согласия на установку Cookie:

Теперь нам нужен код, который проверит нажат ли чекбокс или радиоточка…

if($_POST) { echo ‘ПРИВЕТ МИР!’; } //в фигурных скобках действие…

SetCookie if($_POST) { SetCookie («test_2″,»Value»,time()+60); }

Создаем условие, по которому будем проверять, установлена ли кука, или нет:

if(@$_COOKIE ){ echo ‘COOKIE благополучно созданы : ‘.$_COOKIE ;}else{ echo ‘Cookie еще не установлены! Нажмите отправить и здесь увидите результат!’}

Не забываем, что для получения данных из кук требуется вторая перезагрузка — разберем подробнее в пункте Как задать Cookie теория подробно:

Cookie: создание и параметры

Существуют переменные сессионные (временные) и постоянные. Временные существуют пока открыт браузер, постоянные — пока не истечет срок годности cookie.
Работу сервера и браузера с cookie файлами демонстрирует следующая иллюстрация:

Браузер, посылая запрос на конкретный домен, смотрит, есть ли у него куки для этого домена

Пример cookie

Рис. 9.1. Параметры cookie

параметры cookie

  1. Имя куки: только латинские буквы, цифры, символ подчеркивания и дефис
  2. Значение параметра
  3. Дата истечения срока годности
  4. Путь, который определяет, в каком месте домена может использоваться файл куки
  5. Домен
  6. Указание, что данные куки должны передаваться посредством безопасного соединения HTTPS

Рис. 9.2. Пример установки cookie

Рис. 9.3. Проверка передачи cookie

Задание 9_1: Создать cookie, установить значение – ваше имя. Написать код с проверкой передачи и выводом данного cookie на экран. Добавить текстовое поле для вывода значения cookie в нем.

Задание 9_2:
Выводите на экран количество посещений страницы, используя cookie.Предлагаемый алгоритм (возможен другой вариант выполнения):

  1. Установите переменную для счетчика ($counter), обнулив ее.
  2. Проверьте, установлен ли уже cookie, если да — то присвойте переменной $counter значение cookie (см. пункт 3).
  3. Добавьте cookie для хранения количества посещений.
  4. Приращивайте счетчик.
  5. Проверьте, установлен ли уже cookie, если да — то выводите значение cookie.

Помимо стандартного создания cookie

setcookie("TestCookie", "Ivan", time()+300);

существует возможность создания массива из разных cookie:

Рис. 9.3. Создание массива из разных cookie

Пример: Создать два cookie для хранения имени и возраста. Представить cookie, как массив из двух элементов

Выполнение:

1
2
3
4
5
6
7
while(list($name,$value)=each($_COOKIE)){
	$array="Иван";
	$array1="23";
}
foreach($array as $val){
	echo "значение=".$val."<br>";
}

Результат:

значение=Иван
значение=23

Данное задание также можно выполнить при помощи ассоциативного массива:Выполнение:

1
2
3
4
5
6
while(list($name,$value)=each($_COOKIE)){
	$array"Иван"=23;
}
foreach($array as $k=>$val){
  echo "индекс= ".$k." значение=".$val."<br>";
}

Результат:

значение=Иван
значение=23

Задание:
Создать массив данных для хранения паролей. Значения паролей сохранить в cookie. В html-код добавить текстовые поля, выводить в них значения паролей.

More Examples

Example

Several expire dates for cookies:

<?php$value = «Hello world!»;// cookie will expire when the browser closesetcookie(«myCookie», $value);// cookie will expire in 1 hoursetcookie(«myCookie», $value, time() + 3600);// cookie will expire in 1 hour, and will only be available// within the php directory + all sub-directories of phpsetcookie(«myCookie», $value, time() + 3600, «/php/»);?> <html><body>…some code…</body></html>

Example

To modify a cookie, just set (again) the cookie using the setcookie() function:

<?php$cookie_name = «user»;$cookie_value = «Alex Porter»;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), «/»);?><html><body><?phpif(!isset($_COOKIE)) {    echo «Cookie named ‘» . $cookie_name . «‘ is not set!»;} else {    echo «Cookie ‘» . $cookie_name . «‘ is set!<br>»;    echo «Value is: » . $_COOKIE;}?></body></html>

Example

To delete a cookie, use the setcookie() function with an expiration date in the past:

<?php// set the expiration date to one hour agosetcookie(«user», «», time() — 3600);?><html><body><?phpecho «Cookie ‘user’ is deleted.»;?></body></html>

Example

Create a small script that checks whether cookies are enabled. First, try to create a test cookie with the setcookie() function, then count the $_COOKIE array variable:

<?phpsetcookie(«test_cookie», «test», time() + 3600, ‘/’);?>
<html><body><?phpif(count($_COOKIE) > 0) {    echo «Cookies are enabled.»;} else {    echo «Cookies are disabled.»;}?>
</body></html>

❮ PHP Network Reference

Формат и синтаксис cookie

Описание формата и синтаксиса cookie является пересказом изначальной спецификации Netscape Communications «Persistent Client State HTTP Cookies». В настоящий момент идет разработка более строгой спецификации для cookie. Итак, cookie является частью HTTP заголовка. Полное описание поля Set-Cookie HTTP заголовка:

 Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure

Минимальное описание поля Set-Cookie HTTP заголовка:

 Set-Cookie: NAME=VALUE;

NAME=VALUE — строка символов, исключая перевод строки, запятые и пробелы. NAME-имя cookie, VALUE — значение. Не допускается использование двоеточия, запятой и пробела.
expires=DATE — время хранения cookie, т.е. вместо DATE должна стоять дата в формате «expires=Monday, DD-Mon-YYYY HH:MM:SS GMT», после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия броузера.
domain=DOMAIN_NAME — домен, для которого значение cookie действительно. Например, «domain=cit-forum.com». В этом случае значение cookie будет действительно и для домена cit-forum.com, и для www.cit-forum.com. Но не радуйтесь, указания двух последних периодов доменных имен хватает только для доменов иерархии «COM», «EDU», «NET», «ORG», «GOV», «MIL» и «INT». Для обсуждаемых сейчас новых семи доменов первого уровня («FIRM», «SHOP», «WEB», «ARTS», «REC», «INFO», «NOM»), вероятно, это условие сохранится. Для доменов иерархии «RU», например, придется указывать три периода.
Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, на котором было задано значение cookie.
path=PATH — этот атрибут устанавливает подмножество документов, для которых действительно значение cookie. Например, указание «path=/win» приведет к тому, что значение cookie будет действительно для множества документов в директории /win/, в директории /wings/ и файлов в текущей директории с именами типа wind.html и windows.shtml. Для того, чтобы cookie отсылались при каждом запросе к серверу, необходимо указать корневой каталог сервера, например, «path=/».
Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено значение cookie.
secure — если стоит этот маркер, то информация cookie пересылается только через HTTPS (HTTP с использованием SSL — Secure Socket Level), в защищенном режиме. Если этот маркер не указан, то информация пересылается обычным способом.

Приватность и сторонние куки.

Куки значительным образом влияют на конфиденциальность и анонимность пользователей Интернета. Хотя куки отправляются только на серверы домена, для которого они предназначены, веб-страница может подгружать изображения или другие компоненты из других доменов. Куки, получаемые во время подгрузки этих компонентов из других доменов, называются «сторонними».
Устанавливая баннеры на разных сайтах и используя сторонние куки, рекламная компания может отследить перемещение пользователей между этими сайтами.
Рекламные компании используют сторонние куки для отслеживания перемещений пользователя по сайтам. В частности, рекламная компания может отслеживать пользователей на всех сайтах, где установлены их рекламные баннеры. Знание страниц, посещённых пользователем, позволяет менять направленность рекламы в зависимости от предпочтений пользователя.
Создание профиля пользователей рассматривается как потенциальная угроза приватности даже при отслеживании в рамках одного домена, но особенно это актуально при отслеживания на нескольких доменах с использованием сторонних куки. По этой причине в некоторых странах куки регулируются законодательством.
Правительство Соединенных Штатов приняло строгие законы в отношении куки в 2000 году, после того, как выяснилось, что Агентство по борьбе с наркотиками США использовало куки для отслеживания пользователей, просмотревших их антинаркотическую рекламу в сети. В 2002 году Дэниел Брандт установил, что ЦРУ устанавливает на компьютеры постоянные куки со сроком хранения до 2010 года. Когда ЦРУ было уведомлено о неправомерности подобного использования куки, управление заявило, что это было непреднамеренно и прекратило их установку. 25 декабря 2005 года Брандт обнаружил, что Агентство национальной безопасности оставляло пару постоянных куки после обновления программного обеспечения. После этого сообщения Агентство немедленно отключило куки.
Директива Евросоюза о конфиденциальности электронных данных от 2002 года держит нормы, касающиеся использования куки. В частности, пункт 3 статьи 5 устанавливает, что хранение данных (в том числе куки) может осуществляться лишь если:

  • пользователю предоставляется информация о том, как эти данные используются;
  • пользователь имеет возможность отказаться от этого.

Тем не менее, в данной статье также говорится, что хранение технически необходимых данных освобождается от этих норм. Ожидалось, что директива вступит в силу с октября 2003 года, но доклад от декабря 2004 года отмечает, что эти положения не нашли применения на практике и что в некоторых государствах (Словакия, Латвия,Греция, Бельгия и Люксембург) эти положения не внесены в национальные законодательства. Доклад предлагает провести тщательный анализ ситуации в государствах, участвующих в договоре.
Спецификация P3P включает возможность для веб-сервера сообщить браузеру о нарушении конфиденциальности, указывая характер собираемой информации и цели сбора. Сюда входит и использование информации, полученной с помощью куки. По спецификации P3P браузер может принимать или отклонять куки согласно пользовательским настройкам или же спросить пользователя.
Многие веб-браузеры, включая Safari от Apple и Internet Explorer версий 6 и 7 от Microsoft, поддерживают спецификации P3P, которые позволяют определить, следует ли разрешать сторонние куки. Веб-браузер Opera позволяет пользователям отказаться от сторонних куки и создать глобальные или выборочные профили безопасности для веб-доменов. Firefox 2 был лишён этой опции, но она была восстановлена в версии 3.

Installation

NPM

The npm package has a field pointing to an ES module variant of the library, mainly to provide support for ES module aware bundlers, whereas its field points to an UMD module for full backward compatibility.

Direct download

Starting with version 3 releases are distributed with two variants of this library, an ES module as well as an UMD module.

Note the different extensions: denotes the ES module, whereas is the UMD one.

Example for how to load the ES module in a browser:

<script type="module" src="/path/to/js.cookie.mjs"></script>
<script type="module">
  import Cookies from '/path/to/js.cookie.mjs'

  Cookies.set('foo', 'bar')
</script>

Not all browsers support ES modules natively yet. For this reason the npm package/release provides both the ES and UMD module variant and you may want to include the ES module along with the UMD fallback to account for this:

<script type="module" src="/path/to/js.cookie.mjs"></script>
<script nomodule defer src="/path/to/js.cookie.js"></script>

Here we’re loading the nomodule script in a deferred fashion, because ES modules are deferred by default. This may not be strictly necessary depending on how you’re using the library.

CDN

UMD:

<script src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js"></script>

ES module:

<script
  type="module"
  src="https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.mjs"
></script>

samesite

That’s another security attribute . It’s designed to protect from so-called XSRF (cross-site request forgery) attacks.

To understand how it works and when it’s useful, let’s take a look at XSRF attacks.

Imagine, you are logged into the site . That is: you have an authentication cookie from that site. Your browser sends it to with every request, so that it recognizes you and performs all sensitive financial operations.

Now, while browsing the web in another window, you accidentally come to another site . That site has JavaScript code that submits a form to with fields that initiate a transaction to the hacker’s account.

The browser sends cookies every time you visit the site , even if the form was submitted from . So the bank recognizes you and actually performs the payment.

That’s called a “Cross-Site Request Forgery” (in short, XSRF) attack.

Real banks are protected from it of course. All forms generated by have a special field, so called “XSRF protection token”, that an evil page can’t generate or extract from a remote page (it can submit a form there, but can’t get the data back). And the site checks for such token in every form it receives.

But such protection takes time to implement: we need to ensure that every form has the token field, and we must also check all requests.

The cookie option provides another way to protect from such attacks, that (in theory) should not require “xsrf protection tokens”.

It has two possible values:

samesite=strict (same as samesite without value)

A cookie with is never sent if the user comes from outside the same site.

In other words, whether a user follows a link from their mail or submits a form from , or does any operation that originates from another domain, the cookie is not sent.

If authentication cookies have option, then XSRF attack has no chances to succeed, because a submission from comes without cookies. So will not recognize the user and will not proceed with the payment.

The protection is quite reliable. Only operations that come from will send the cookie, e.g. a form submission from another page at .

Although, there’s a small inconvenience.

When a user follows a legitimate link to , like from their own notes, they’ll be surprised that does not recognize them. Indeed, cookies are not sent in that case.

We could work around that by using two cookies: one for “general recognition”, only for the purposes of saying: “Hello, John”, and the other one for data-changing operations with . Then a person coming from outside of the site will see a welcome, but payments must be initiated from the bank website, for the second cookie to be sent.

samesite=lax

A more relaxed approach that also protects from XSRF and doesn’t break user experience.

Lax mode, just like , forbids the browser to send cookies when coming from outside the site, but adds an exception.

A cookie is sent if both of these conditions are true:

  1. The HTTP method is “safe” (e.g. GET, but not POST).

    The full list of safe HTTP methods is in the RFC7231 specification. Basically, these are the methods that should be used for reading, but not writing the data. They must not perform any data-changing operations. Following a link is always GET, the safe method.

  2. The operation performs top-level navigation (changes URL in the browser address bar).

    That’s usually true, but if the navigation is performed in an , then it’s not top-level. Also, JavaScript methods for network requests do not perform any navigation, hence they don’t fit.

So, what does is basically allows a most common “go to URL” operation to have cookies. E.g. opening a website link from notes satisfies these conditions.

But anything more complicated, like a network request from another site or a form submission loses cookies.

If that’s fine for you, then adding will probably not break the user experience and add protection.

Overall, is a great option, but it has an important drawback:

samesite is ignored (not supported) by old browsers, year 2017 or so.

So if we solely rely on to provide protection, then old browsers will be vulnerable.

But we surely can use together with other protection measures, like xsrf tokens, to add an additional layer of defence and then, in the future, when old browsers die out, we’ll probably be able to drop xsrf tokens.

Summary

provides access to cookies

  • write operations modify only cookies mentioned in it.
  • name/value must be encoded.
  • one cookie up to 4KB, 20+ cookies per site (depends on a browser).

Cookie options:

  • , by default current path, makes the cookie visible only under that path.
  • , by default a cookie is visible on current domain only, if set explicitly to the domain, makes the cookie visible on subdomains.
  • or sets cookie expiration time, without them the cookie dies when the browser is closed.
  • makes the cookie HTTPS-only.
  • forbids the browser to send the cookie with requests coming from outside the site, helps to prevent XSRF attacks.

Additionally:

  • Third-party cookies may be forbidden by the browser, e.g. Safari does that by default.
  • When setting a tracking cookie for EU citizens, GDPR requires to ask for permission.

Сессии

Мы уже умеем сохранять информацию для пользователя между посещениями страницы с помощью кук. Но зачем же нам ещё сессии, и для чего они нужны?
Сессии, они же сеансы, это, по сути, просто удобная обёртка над куками. Они также позволяют хранить данные, релевантные пользователю, но с некоторыми отличиями и ограничениями:

  • Данные хранятся не произвольное время, а только до закрытия вкладки с веб-страницей.
  • Чтобы сессии работали, в начале каждого сценария надо вызывать функцию .
  • Доступный объём для хранения информации намного больше.

Запись и чтение информации при использовании сессий выглядит просто как работа со специальным массивом .

Как устроены сессии

  1. PHP генерирует уникальный идентификатор браузера.
  2. Идентификатор сохраняется в специальную куку и передаётся с каждым запросом.
  3. Все данные, которые записываются в сессию, PHP автоматически сохраняет в специальном файле на сервере.

Благодаря существованию сессий в PHP, мы можем сохранять любые данные так же просто, как присваивать их переменным. Но, в отличие от переменных, эти данные будут сохраняться для пользователя между запросами в пределах сеанса.

Перепишем сценарий для подсчета посещений, но теперь используем сессии:

Работа с cookie из PHP

Для сохранения cookie в браузере пользователя используется функция :

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

Может принимать следующие параметры:

  • : имя cookie, которое будет использоваться для доступа к его значению.
  • : значение или содержимое cookie — любой алфавитно-цифровой текст не более 4 кБайт.
  • (необязательный параметр): срок действия, после которого cookie уничтожаются. Если данный параметр не установлен или равен 0, то уничтожение cookie происходит после закрытия браузера.
  • (необязательный параметр): путь к каталогу на сервере, для которого будут доступны cookie. Если задать «/», cookie будут доступны для всего сайта. Если задать, например, , cookie будут доступны из этого каталога и всех его подкаталогов (, ). По умолчанию значением является текущий каталог, в котором устанавливаются cookie.
  • (необязательный параметр): задает домен, для которого будут доступны cookie. Если это домен второго уровня, например, , то cookie доступны для всего сайта , в том числе и для его поддоменов типа . Если задан поддомен , то cookie доступны только внутри этого поддомена.
  • (необязательный параметр): указывает на то, что значение cookie должно передаваться по протоколу HTTPS. Если задано , cookie от клиента будет передано на сервер, только если установлено защищенное соединение. По умолчанию параметр равен .
  • (необязательный параметр): если равно , cookie будут доступны только через HTTP протокол. То есть cookie в этом случае не будут доступны из JavaScript. По умолчанию параметр равен .

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

setcookie('lastvisit', '', time() - 3600);

Чтобы к идентификатору сессии не было доступа из JavaScript, нужно отредактировать файл :

; Name of the session (used as cookie name).
; http://php.net/session.name
session.name = PHPSESSID

; Whether or not to add the httpOnly flag to the cookie, which makes
; it inaccessible to browser scripting languages such as JavaScript.
; http://php.net/session.cookie-httponly
session.cookie_httponly = 1

Можно также использовать функцию , чтобы установит флаг уже во время выполнения приложения:

ini_set('session.cookie_httponly', 1);
session_start();

Еще одни способ изменить флаг — вызов функции перед :

session_set_cookie_params(/*...*/);
session_start();

Установить флаг для из :

; http://php.net/session.cookie-secure
session.cookie_secure = 1

Установить флаг во время работы приложения:

ini_set('session.cookie_secure', 1);
session_start();
session_set_cookie_params(/*...*/);
session_start();

Поиск:
Cookie • HTTP • HTTPS • JavaScript • PHP • Web-разработка • expire • httponly • localStorage • php.ini • secure • sessionStorage • setcookie

Получение значения куки

Для того, чтобы получить значение предварительно установленного куки для текущего документа, нужно использовать свойство :

Таким образом возвращается строка, которая состоит из списка пар имя/значение, разделенных точкой с запятой для всех куки, которые действуют для текущего документа. Например:

В данном примере 2 куки, которые были предварительно установлены: , который имеет значение , и , который имеет значение .

Функция для получения значения куки

Обычно, нам нужно только значение одного куки за один раз. Поэтому строка куки не удобна для использования! Здесь приводится функция, которая обрабатывает строку , возвращет только то куки, которое представляет интерес в конкретный момент:

Данная функция использует регулярное выражение для поиска имени куки, которое представляет интерес, а затем возвращает значение, которое обработано функцией для перекодирования к нормальному символьному виду. (Если куки не найдено, возвращается значение null.)

Данная функция проста в использовании. Например, для возврата значения куки :

Definition and Usage

The setcookie() function defines a cookie to be sent along with the rest of the HTTP headers.

A cookie is often used to identify a user. A cookie is a small file that the
server embeds on the user’s computer. Each time the same computer requests a
page with a browser, it will send the cookie too. With PHP, you can both create and retrieve cookie values.

The name of the cookie is automatically assigned to a variable of the same
name. For example, if a cookie was sent with the name «user», a variable is
automatically created called $user, containing the cookie value.

Note: The setcookie() function must appear BEFORE the <html> tag.

Note: The value of the cookie is automatically URLencoded when
sending the cookie, and automatically decoded when received (to prevent
URLencoding, use setrawcookie() instead).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector