Невозможно удалить куки, которые были установлены в JavaScript на сервере - PullRequest
5 голосов
/ 09 марта 2009

Я пытаюсь написать PHP-код для удаления всех пользовательских файлов cookie на моем домене.

Вот что я получил:

<?php
$domain = 'www.example.com';
$deleteExpiration = time() - 60*60*24*365*10; // 10 years ago
foreach (array_keys($_COOKIE) as $cookie) {
    setcookie($cookie, 0, $deleteExpiration, '/', $domain);
}

Запуск этого кода на http://www.example.com/delete_cookies.php удаляет все куки, которые были установлены на сервере, но не куки, которые были установлены в JavaScript.

В диалоговом окне «Файлы cookie» Firefox я подтвердил, что проблемные файлы cookie действительно получены (путь = /; домен = www.example.com). Используя активные HTTP-заголовки, я вижу, что отправляется следующий заголовок:

Set-Cookie: CookieName=0; expires=Fri, 12-Mar-1999 19:36:15 GMT; path=/; domain=www.example.com

Так что я считаю, что команда setcookie работает как положено. Firefox просто не выполняет запрос.

Еще одна вещь, которую я заметил, это то, что если я установил cookie на domain=www.example.com на сервере, то он будет указан в диалоговом окне cookie Firefox с domain=".www.example.com", но если я установлю следующий cookie с использованием кода JavaScript, начальная точка не добавляется.

Что я делаю не так? Как я могу удалить эти куки?

1 Ответ

5 голосов
/ 10 марта 2009

У меня была похожая проблема, и она была решена, просто не передав домен.

setcookie($cookie, '', 1, '/');

На дополнительном примечании от cookie_spec" Установка пути к значению более высокого уровня не переопределяет другие более конкретные сопоставления пути. Если есть несколько совпадений для данного имени файла cookie, но с отдельные пути, все соответствующие куки будут отправлены."Таким образом, если у вас есть файлы cookie с одинаковыми именами в разных местах пути, вам придется удалить каждый из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...