Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Saving the time the user is logged on

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?

like image 712
Francisco Soto Avatar asked Mar 01 '23 06:03

Francisco Soto


2 Answers

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.

like image 159
nickf Avatar answered Mar 11 '23 22:03

nickf


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.

like image 34
Eric Wendelin Avatar answered Mar 11 '23 22:03

Eric Wendelin