Solved

How can I track user idle time

Posted on 2010-08-28
7
490 Views
Last Modified: 2012-05-10
Hi,

I would like to know how can I track whether there has been any activity from user on my site , that is basically what I want to do is if user has not clicked any link say for 5 minutes user should be logged out.

Thanks..
0
Comment
Question by:activesoftware
  • 3
  • 3
7 Comments
 
LVL 75

Accepted Solution

by:
Michel Plungjan earned 250 total points
ID: 33548508
<script type="text/javascript">
var tId="";
document.onmousemove=function() {
  resetTimer();
}
window.onload=function() {
  resetTimer();
}
function resetTimer() {
    clearTimeout(tId);
     tId = setTimeout(function() { location.replace('logout.html') },50000);
 }
</script>
0
 
LVL 12

Expert Comment

by:Rok-Kralj
ID: 33548845
For each user, keep field last_action in the database.

On each page, first check if time() - $db['last_action'] is bigger than 5*60, and if, log the user out, otherwise update last action to current time.

This is far better solution that one above, because it is solved on the server side and user cannot interfere with it.
0
 

Author Closing Comment

by:activesoftware
ID: 33549054
Thanks
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 
LVL 12

Expert Comment

by:Rok-Kralj
ID: 33549140
I don't think you will be driving far with mplungjan's car.
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 33549152
Strange comment. Why would it not be perfectly ok to detect on the client that the user of the page on the client has not done anything on the client? You solution is server intensive, needs at least a session whereas mine just needs a tiny script in an external js file in the head of the page, can be included from the server or not depending.

If the user never clicks on anything, how are you planning to kick them to the homepage automatically? Using server push?


0
 
LVL 12

Expert Comment

by:Rok-Kralj
ID: 33549337
Yes, it indeed has a pros that it detects also mouse movement. But that is easily spoofable. How can you be sure that user even has a javascript on?

Server intensive, come on :) And your comment comment about needing at least a session - how can you even log out without a session :) You need a session anyway.

Your script is intensive with resources (thou not server's), because it calls resetTimer() for every pixel mouse pointer moves. I approximate up to 100 calls per second.

No, if user doesn't click anything for 5 minutes, I'm just going to display them a message: "Your session has expired due to 5 minute inactivity. Please log on again."
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 33549451
Seems the asker is not worried about spoofing, just want the user to go away if he does nothing on his site.

User can also ping your server with some ping script

Both solutions work in my opinion
0

Featured Post

ScreenConnect 6.0 Free Trial

At ScreenConnect, partner feedback doesn't fall on deaf ears. We collected partner suggestions off of their virtual wish list and transformed them into one game-changing release: ScreenConnect 6.0. Explore all of the extras and enhancements for yourself!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
3 proven steps to speed up Magento powered sites. The article focus is on optimizing time to first byte (TTFB), full page caching and configuring server for optimal performance.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question