Cookie PHP пишет на неправильном домене

У меня есть 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.

6
задан maček 6 July 2010 в 19:52
поделиться

3 ответа

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

setcookie("foo", "cat", 0, "/");

Ожидаемые данные cookie:

+-------+-------+-----------------------+-------+----------+
| Name  | Value | Domain                | Path  | Expires  |
+-------+-------+-----------------------+-------+----------+
| foo   | cat   | my.domain.tld         | /     | Session  |
+-------+-------+-----------------------+-------+----------+

Странно, но это работает.

0
ответ дан 17 December 2019 в 22:10
поделиться

Из документации:

Домен, в котором доступен файл cookie. Чтобы файл cookie был доступен на всех поддоменах example.com, вы должны установить для него значение «.example.com». Файл. не требуется, но делает его совместимым с большим количеством браузеров. Установка www.example.com сделает cookie доступным только в субдомене www. См. Согласование хвостов »в спецификации.

И спецификация соответствия хвостов находится здесь:

http://curl.haxx.se/rfc/cookie_spec.html

0
ответ дан 17 December 2019 в 22:10
поделиться

http://www.php.net/manual/en/function.setcookie.php#93641

Ответ обсуждается в сообщении в руководстве по php.

Данные cookie устанавливаются агентом просмотра, поэтому обрабатываются по-разному в зависимости от процесса, который использует браузер.

1
ответ дан 17 December 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: