У меня есть cookie, который я использую на своем приложении. Это похоже на это:
+-------+-------+-----------------------+-------+----------+
| Name | Value | Domain | Path | Expires |
+-------+-------+-----------------------+-------+----------+
| foo | bar | my.domain.tld | / | Session |
+-------+-------+-----------------------+-------+----------+
В разделе моего сценария, на основе некоторого условия, я пытаюсь изменить значение cookie. Я использую этот код:
// overwrite cookie
if($condition){
setcookie("foo", "cat", 0, "/", "my.domain.tld");
}
Позже, мои cookie-данные похож на это:
+-------+-------+-----------------------+-------+----------+
| Name | Value | Domain | Path | Expires |
+-------+-------+-----------------------+-------+----------+
| foo | bar | my.domain.tld | / | Session |
| foo | cat | .my.domain.tld | / | Session |
+-------+-------+-----------------------+-------+----------+
Каким образом a .
предварительно ожидаться к домену? Я хочу перезаписать существующий cookie.
Как оказалось, указание отсутствия домена, похоже, работает:
setcookie("foo", "cat", 0, "/");
Ожидаемые данные cookie:
+-------+-------+-----------------------+-------+----------+
| Name | Value | Domain | Path | Expires |
+-------+-------+-----------------------+-------+----------+
| foo | cat | my.domain.tld | / | Session |
+-------+-------+-----------------------+-------+----------+
Странно, но это работает.
Из документации:
Домен, в котором доступен файл cookie. Чтобы файл cookie был доступен на всех поддоменах example.com, вы должны установить для него значение «.example.com». Файл. не требуется, но делает его совместимым с большим количеством браузеров. Установка www.example.com сделает cookie доступным только в субдомене www. См. Согласование хвостов »в спецификации.
И спецификация соответствия хвостов находится здесь:
http://www.php.net/manual/en/function.setcookie.php#93641
Ответ обсуждается в сообщении в руководстве по php.
Данные cookie устанавливаются агентом просмотра, поэтому обрабатываются по-разному в зависимости от процесса, который использует браузер.