Как я могу сбросить сессию, когда пользователь уходит со страницы? - PullRequest
1 голос
/ 15 ноября 2010

Я создал сеанс , чтобы отслеживать некоторые действия пользователя на определенной странице.

Когда пользователь уходит с этой конкретной страницы (но все еще на том же сайте), мне нужно сбросить сеанс.

Я могу установить таймер на время истечения сеанса, но это не то, чтоЯ хочу.

Как мне сбросить сеанс при навигации по страницам?

Ответы [ 5 ]

4 голосов
/ 15 ноября 2010

Просто сделайте сброс сеанса первым, что вы делаете при загрузке новой страницы.

0 голосов
/ 15 ноября 2010

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

<script>
 function myAjaxCall(){
  //if using jquery
  $.ajax('unset.php');
 }
</script>

<body onunload="myAjaxCall()">
0 голосов
/ 15 ноября 2010

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

Но есть старый трюк, используемый, например, в приложениях чата, где должно быть напечатано сообщение "... уходит": при выгрузке просто откройте всплывающее окно с window.open(), которое вызывает вашу страницу выхода из системы, а затем закрывается. .

0 голосов
/ 15 ноября 2010

В качестве альтернативы вы можете использовать

unset($_SESSION);

или

session_destroy();

Хотя обратите внимание, что они обрабатываются несколько иначе, чем приведенные выше предложения.Обратите внимание, что второй (session_destroy) потребует от вас перезапустить сеанс, если он вам понадобится снова.

0 голосов
/ 15 ноября 2010

У вас есть одна страница, через которую проходит весь трафик? Если это так, вы можете сделать простую проверку

if ($current_page != $session_page) {
    $_SESSION = array();
}

Если у вас нет ни одной страницы, через которую проходит весь трафик, вам нужно будет сбросить сеанс в начале каждой второй страницы.

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