php setcookie домен - PullRequest
       6

php setcookie домен

21 голосов
/ 18 февраля 2010

Некоторые приложения, написанные не мной и не на 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.Что я могу сделать?

Ответы [ 3 ]

37 голосов
/ 18 февраля 2010

Проблема также решена здесь: 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" в качестве домена. Конечная точка позволит использовать cookie для всех поддоменов домена «domain.com» и может перезаписать «www.» - cookie, но сначала я воспользуюсь вышеуказанным решением.

5 голосов
/ 18 февраля 2010

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

0 голосов
/ 18 февраля 2010

Попробуйте создать несколько других файлов 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);

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

...