AndrewA
Guest
Как узнать ушел или нет
<script>
window.onunload=function(e)
{
window_onunload()
return true;
}
function window_onunload()
{
open('clear.php', 'Exit', 'scrollbars=no,status=no,left=0,top=0,width=50,height=50');
}
</script>
Если пользователь ушел на любую страницу - запустится clear.php, который все зачистит и самоуничтожится с помощью функции
<script>
var n=2;
function window_onload()
{
if (n == 0) window.close();
n = n - 1;
window.setTimeout('window_onload()',10);
}
</script>
Это, однако, не спасет от ситуации, когда пользователь никуда специально не уходил, кроме как на кухню пить чай. Возращается он - щелкает на кнопке и это будет уже другая сессия, а мусор в базе остался.
Мысль пришла
А что если во фрейм-контейнере воспользоваться javascript функцией setTimeout? Предположим каждые 5 минут она дергает сервер обращением document.location = "restore.php" с выводом ответа сервера в невидимый фрейм? Тогда, пока окно броузера открыто - сессия не прекратится, а если пользователь куда-то пошел гулять по инету, или закрыл броузер - сработает onunload и корректное завершение по clear.php
Можно сделать фрейм содержащий документ из одного фрейма. Для пользователя он будет выглядеть так, как обычная страница, но... Пользователь будет работать на странице внутри фрейма и соответсвенно существует возможность знать чего он там делает с помощью скриптаOriginally posted by sergee
А если пользователь передумал у ушел со страницы не завершив все действия, то просто удалить временную таблицу. Вот, а не могу я как раз сделать эту проверку, т.е. покинул ли пользователь страницу или нет. Если не сложно подскажите ее алгоритм.
<script>
window.onunload=function(e)
{
window_onunload()
return true;
}
function window_onunload()
{
open('clear.php', 'Exit', 'scrollbars=no,status=no,left=0,top=0,width=50,height=50');
}
</script>
Если пользователь ушел на любую страницу - запустится clear.php, который все зачистит и самоуничтожится с помощью функции
<script>
var n=2;
function window_onload()
{
if (n == 0) window.close();
n = n - 1;
window.setTimeout('window_onload()',10);
}
</script>
Это, однако, не спасет от ситуации, когда пользователь никуда специально не уходил, кроме как на кухню пить чай. Возращается он - щелкает на кнопке и это будет уже другая сессия, а мусор в базе остался.
Мысль пришла
А что если во фрейм-контейнере воспользоваться javascript функцией setTimeout? Предположим каждые 5 минут она дергает сервер обращением document.location = "restore.php" с выводом ответа сервера в невидимый фрейм? Тогда, пока окно броузера открыто - сессия не прекратится, а если пользователь куда-то пошел гулять по инету, или закрыл броузер - сработает onunload и корректное завершение по clear.php