New and improved solution
As Mr. Kennedy noted, my initial solution (see below) does not work. so here is a way to do it.
The userβs database stores the timestamp of the last action, which is updated every time the user loads the page.
Then in checkaccess.php
if ( time-last_access > max_inactivity_time ) { return array('access' => '0'); } else { return array('access' => '0'); }
Call checkaccess.php in the javascript timer (below) and log out accordingly
It also allows you to use the "currently logged in" feature.
thanks mr kennedy
Original, non-working solution
Create a php page that returns 1 or 0 depending on the validity of the current user session.
Then on your pages that you want to disable, add this to the head (you need jquery)
setInterval(function(){ var url = UrL_OF_SESSION_CHECKING_PAGE; $.getJSON( url, function( data ) { if (data.access=='0') { window.location = LOGIN_PAGE; } } ); }, 180000);
Every 180 seconds (3 minutes) it requests a php page and gets a session validity. If it is invalid, it is redirected to the login page
If the user opens several pages, the pages will timeout and redirect at different times, because their timers are different.
Here's a nice page about javscript timers http://ejohn.org/blog/how-javascript-timers-work/
Simple session verification page
session_start(); die( json_encode( isset( $_SESSION['VARIABLE'] ) ? array( 'access' => '1') : array( 'access' => '0' ) ) );
change the VARIABLE value to one of your session variables
Galen
source share