Домен php setcookie

Некоторое приложение, не написанное мной, а не на PHP, создает файл cookie для домена "www.domain.com".

Я пытаюсь заменить этот файл cookie. Итак, в php я сделал:

setcookie('mycookie','mydata',time() + 2*7*24*60*60,'/','www.domain.com', false);

Однако полученный файл cookie создается для домена: ".www.domain.com", обратите внимание на точку ".". перед доменом.

Поэтому он не заменяет его, он создает еще один файл cookie. Что я могу сделать?

Ответ 1

Проблема также упоминается здесь: http://php.net/manual/en/function.setcookie.php

Смотрите комментарий от "jah": If you want to restrict the cookie to a single host, supply the domain parameter as an empty string

Вы также можете попробовать ".domain.com" в качестве домена. Конечная точка разрешает куки файлы для всех поддоменов для "domain.com" и может перезаписывать "www." - cookie, но я сначала пойду с вышеуказанным решением.

Ответ 2

Если вы укажете домен, вы должны следовать RFC 2109 и префикс домена с точкой; иначе клиент сделает это. Но если вы вообще не укажете домен, клиент возьмет домен запроса.

Ответ 3

Разве это не ошибка? Что если я хочу, чтобы мои куки были только в www.example.com, а не в something.www.example.com? например, для производительности. Я должен быть в состоянии указать домен cookie и НЕ подстановочный знак для всех [sub] [sub] поддоменов. Не говоря уже о количестве ошибок, которые оно вызывает, например, установка cookie с помощью php и попытка удалить его с помощью JavaScript (который не добавляет глупую точку).

Ответ 4

Попробуйте создать несколько других файлов cookie с тем же именем, но в другом домене. Пример:

setcookie('mycookie','mydata1',time() + 2*7*24*60*60,'/','www.domain.com', false);
setcookie('mycookie','mydata2',time() + 2*7*24*60*60,'/','www.domain.com', false);
setcookie('mycookie_top','mydata1',time() + 2*7*24*60*60,'/','domain.com', false);
setcookie('mycookie_top','mydata2',time() + 2*7*24*60*60,'/','domain.com', false);

Затем проверьте файл cookie, созданный этими командами в Firebug. Если вы продолжаете получать двойной файл cookie, это может быть ошибкой в ​​PHP. Кроме того, попробуйте установить cookie в код javascript, посмотрите, есть ли у вас все те же проблемы.