Уничтожить cookie, когда окно браузера закрывает PHP - PullRequest
0 голосов
/ 05 июля 2018

Я создал всплывающее окно в WordPress, которое открывается, когда IP-адрес посетителя из Австралии. Всплывающее окно будет отображаться при загрузке страницы. Я хочу, чтобы он не отображался до тех пор, пока экран браузера не закроется.

Для этого я использовал куки. Я устанавливаю cookie при нажатии кнопки закрытия и создаю cookie в PHP с помощью ajax.

Вот код, который я использую для создания cookie:

 setcookie("stay_here", "yes", 0, "/");

Я установил время cookie на 0, чтобы оно уничтожалось при закрытии браузера. Проблема заключается в том, что на сайте есть область учетной записи пользователя, и когда пользователь входит в систему, создается сеанс пользователя. Этот сеанс не разрушается после закрытия браузера. И когда указанный выше файл cookie создается, он автоматически устанавливает время истечения срока действия как «Сеанс».

Я проверил это в Firefox, и переменная данных «Срок действия» файла cookie установлена ​​как «Сеанс». Так как сеанс не разрушается, когда я закрываю браузер, а значение cookie Истекает, которое установлено как Сеанс, также не уничтожает.

Но я хочу, чтобы единственный cookie-файл был уничтожен при закрытии браузера, а не сеанса.

Надеюсь, вы понимаете мою проблему.

Можете ли вы, ребята, взглянуть на проблему и дать мне решение этой ситуации.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

См .: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

В разделе "Сеансовые файлы cookie" указывается:

Однако веб-браузеры могут использовать восстановление сеанса, что делает большинство сеансовые куки-файлы постоянны, как если бы браузер никогда не закрывался.

Короче говоря: не существует надежного способа определить, был ли браузер закрыт.

Что вы можете сделать, это создать cookie, срок действия которого истекает через 12 часов:

setcookie("last_page_hit",$PHP_SELF,time()+12*60*60,"/");

если этот файл cookie отсутствует, вы предполагаете, что это новый визит на сайт, и снова показывает всплывающее окно.

0 голосов
/ 05 июля 2018

В идеале файл cookie создается с помощью функции SETCOOKIE в PHP с временем истечения 0, он будет удален из браузера, когда вы закроете вкладку, и время не может быть перезаписано временем файла cookie сеанса.

Попробуйте создать 1 страницу test.php и написать setcookie ("stay_here", "yes", 0, "/"); код и проверьте информацию из куки браузера.

Вы также можете установить время файла cookie сеанса равным 0, чтобы файл cookie сеанса также удалялся при закрытии браузера.

ini_set ('session.cookie_lifetime', 0);

0 голосов
/ 05 июля 2018

Вы можете использовать sessionStorage https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage Он будет храниться на стороне клиента до закрытия окна. Это относительно новая функция, поэтому вам следует проверить, поддерживается ли она браузерами ваших клиентов.

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