Автоматически выходить из системы при закрытии браузера - PullRequest
1 голос
/ 26 апреля 2011

Я использую PHP в качестве языка на стороне сервера и Flex в качестве внешнего интерфейса. В моем приложении есть разные уровни пользователей. В соответствии с онлайн статусом оператора QC назначает некоторую работу онлайн. Я просто хочу обновить статус онлайн / оффлайн пользователя, когда он автоматически закрывает браузер. Flex вызывает службу PHP, но не получает никакого ответа. БД (MySQL) не обновляется. Любая помощь приветствуется.

Ответы [ 3 ]

7 голосов
/ 26 апреля 2011

Насколько я знаю, это невозможно.Лучше всего сохранить datetime в базе данных для пользователя при входе в систему, а затем запустить скрипт AJAX, чтобы обновлять время этого пользователя каждую минуту в базе данных.Затем вы можете проверить, есть ли у пользователя datetime старше минуты, чтобы увидеть, вошел ли пользователь в систему. Вы можете настроить «разрешение» этого подхода ... проверяя, например, каждые 5 минут.

0 голосов
/ 09 мая 2011

Спасибо всем. Я был сбит с толку насчет AJAX, но наконец-то все готово. Я вызываю функцию при закрытии браузера. <body onunload='Logout();'>. Вот функция

var xmlhttp = new XMLHttpRequest(); url = "http://*****.com/public/LogOutThruJS.php?UserID="+UserID+"&LogHistoryId="+LogHistoryId; function Logout() { xmlhttp.open("GET", url,false); xmlhttp.send(null); xmlhttp=null; delete xmlhttp;<br> } Я надеюсь, что его нестабильный:).

0 голосов
/ 27 апреля 2011

Если вы хотите, чтобы сервисный вызов выполнялся до закрытия браузера, я думаю, вам нужно будет, чтобы Javascript отправил сообщение вашему клиенту flex / flash, а затем, чтобы flex сделал сервисный вызов, чтобы ваш сервер знал клиент / браузер закрывается После успешного вызова службы (запрос / публикация) клиент flash отвечает на Javascript, чтобы продолжить закрытие браузера. Предостережение заключается в том, что я не думаю, что вы можете постоянно иметь блок JavaScript от браузера к браузеру. Браузер может закрыться до того, как Flash сможет инициировать вызов службы. Удачи.

Кстати, вы можете зарегистрировать прослушиватель обратного вызова, используя ExternalInterface, и иметь сигнал JavaScript Flex, используя функцию javascript, указанную в прослушивателе обратного вызова.

...