views:

168

answers:

2

In the application I am developing I have to store the time some particular users remain logged into the application, unfortunately, in web applications there are several ways the user can log off.

1.- User clicks log off. 2.- User session expires. 3.- User closes the window. 4.- User types another site url in the address bar.

The first one is quite easy because the application gets control of the logging off process. But in the other ones it gets tricky.

What would you do to solve this problem?

+7  A: 

On each page view, update your count. If they log out, then you've got an accurate measure. If they navigate away, or any other method, then the most that you're out is the length of time they were on one page.

If it were really really important to have an accurate measure, then perhaps an AJAX "heartbeat" every minute, but that's most likely overkill.

nickf
Just like stackoverflow's "heartbeat" :)
Eric Wendelin
+1  A: 

Well for #3 and #4 you can attach something to the window.onunload event that gets you the time for calcuations, but be careful that your code is fast enough that the page doesn't completely unload before your AJAX request can be sent.

As far as #2 goes, the "heartbeat" suggested by nickf is probably the best solution there.

Eric Wendelin