Домен 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, посмотрите, есть ли у вас все те же проблемы.