PHP Javascript? Сделайте что-то, когда пользователь закрывает страницу или браузер

Возможный дубликат:
Как я могу уничтожить сеансы, если пользователь закрывает окно браузера или перемещается в сторону от страницы в php?

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

Я видел веб-сайт, который делает это.

Может ли кто-нибудь объяснить, как это сделать и отправить пример, пожалуйста?

Заранее благодарю.

Единственный способ, которым вы можете что-то сделать, когда страница закрыта или перемещена от нее, – это привязать обработчик события к событию разгрузки, как предлагает Rocket. Однако вы не должны полагаться на это событие для запуска, поскольку это может помешать многим. Браузер может остановить его, чтобы сосредоточить свои ресурсы на других задачах, пользователь может потерять его соединение, браузер может быть прерван и т. Д.

Самый надежный способ отслеживания пользователей и сеанса – заставить их отправлять сообщения keepAlive на сервер с заданным интервалом. Затем вы узнаете, что пользователь ушел где-то между заданной меткой времени и интервалом сообщения keepAlive.

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

Однако этот подход не понадобится, если вам нужно только создать отличный «выход из системы».

Я бы использовал jQuery для выполнения этой задачи .. что-то вроде этого и используя window.onunload, как упоминалось выше:

$.ajax({ type: 'POST', url: url, data: data, success: success, dataType: dataType }); 

Вы можете использовать window.onunload для запуска вызова AJAX, когда пользователь покидает страницу / закрывает вкладку.

 window.onunload = function(){ // AJAX call to mark user "offline" } 

EDIT: Я предлагаю установить переменную при нажатии на ссылки, так что это будет выполняться только при выходе пользователя из страницы.

Используя jQuery, это можно сделать следующим образом:

 $('a').click(function(){ // Run for all links $('body').data('linkClicked', true); // Set global variable }); $(window).unload(function(){ // jQuery version of window.onunload if(!$('body').data('linkClicked')){ // Check global variable $.ajax({ url: 'url', data: {some: data}, async: false // this locks the browser, but it may be needed to make // sure the ajax call runs before the tab is closed }); } });