Время истечения срока действия cookie не устанавливается после каждого закрытия браузера, но оно не работает - PullRequest
0 голосов
/ 26 октября 2018

Сначала я устанавливаю cookie, когда я закрываю браузер, предполагается, что cookie уничтожен, поэтому я не устанавливаю никакого срока действия. Но почему-то cookie не уничтожается даже после закрытия браузера.

<?php
session_start();
if(isset($_COOKIE['favcolor']))
{
   echo $_COOKIE['favcolor'];
}
else
{
   $_SESSION["favcolor"] = "green";
   setcookie('favcolor', 'green',0);
   echo 'new cookie and session are set';
}
?>

1 Ответ

0 голосов
/ 26 октября 2018

Во-первых, ваш код выглядит правильно, как представлено. Как указано в документации PHP для setcookie():

Если установлено значение 0 или опущено, срок действия файла cookie истекает в конце сеанса (при закрытии браузера).

Это известно как "сеансовый cookie" и должно быть удалено браузером при закрытии.

Рассматривая это немного, кажется, что Chrome и Firefox ведут себя немного по-разному, в зависимости от того, настроены ли они для запоминания открытых вкладок и окон при запуске, и это специально.

Вы упомянули, что используете Chrome - если Chrome настроен на «Продолжить с того места, на котором остановился» при запуске, куки-файлы сеанса могут не удаляться при закрытии вкладки и перезапуске браузера.

enter image description here

Я могу убедиться, что файл cookie удален при закрытии браузера, когда я выбираю «Открыть страницу новой вкладки».

То же самое с Firefox - есть дополнительная информация с некоторыми подробностями о том, как настроить это на форуме поддержки Mozilla.

Короче говоря, возможно, вы не сможете полагаться на Chrome или Firefox, чтобы гарантировать удаление файла cookie сеанса.

...