Некоторое приложение, написанное не мной, а не 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. Что я могу сделать?
Проблема также адресуется здесь: 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, но я сначала пойду с вышеуказанным решением.
Если вы укажете домен, вы должны следовать RFC 2109 и префикс домена с точкой; иначе клиент сделает это. Но если вы вообще не укажете домен, клиент возьмет домен запроса.
Попробуйте создать несколько других файлов 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, посмотрите, есть ли у вас все те же проблемы.