Я устанавливаю файл cookie "SESSION" через JS:
var d = new Date();
d.setTime(d.getTime() + (2*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cookie.name + "=" + cookie.value +";"+ expires + ";
path="+cookie.path+";domain="+data.shared_domain+";";
Затем я удаляю файл cookie с истечением срока его действия через JS:
document.cookie = "SESSION=; expires=Thu, 01 Jan 1971 00:00:01 UTC; path=/;domain="+domain;
После выполненияпри этом console.log(document.cookie)
вернет все остальные файлы cookie, кроме этого, чего я и ожидал.
С другой стороны, я выполняю проверки сеансов через PHP, пытаясь прочитать файл cookie, выполнив $_COOKIE["SESSION"]
,
isset ($ _ COOKIE ["SESSION"]) вернет true
, и я могу прочитать старое значение cookie.Независимо от того, сколько раз я обновляю страницу, она все равно читает.
Я неправильно понимаю, как работают куки?Есть ли другой способ проверить, истек ли срок действия файла cookie в PHP?
Обновление: Да, проблема в том, что файл cookie имеет флаг HttpOnly
.
Так что теперь я пытаюсь удалить его через PHP.Основываясь на этом другом вопросе , я делаю:
setcookie("SESSION", "", time()-3600);
if (isset($_COOKIE['SESSION'])) unset($_COOKIE['SESSION']);
Когда я закончу, я проверяю, что все прошло быстро var_dump($_COOKIE)
, и да, его нигде нетвидел.
За исключением того, что Chrome все еще видит его (срок его действия истек в 1969 году), и когда я перехожу на другую часть сайта, проверка на наличие этого cookie возвращает значение.
Я добавлю еще один фрагмент информации на случай, если что-то изменится: этот файл cookie используется sub.domain.com и app.sub.domain.com.Когда я устанавливаю его, я устанавливаю его для .domain.com.И я отключил его для .domain.com.
Как мне избавиться от этого печенья навсегда?