sadmicrowave
sadmicrowave

Reputation: 40912

php how to execute function on session timeout

I have $_SESSION variables containing user login username that have the default session life set ( 24 minutes I think ). I'm wondering if there is a way to execute a function on session timeout.

I know I can tell the page to execute the function when the user reloads the page and the session variable has expired but I'm trying to figure out a way for the server to do this by itself. Is there such a method?

My Reasoning: When the user logs in I report to my database and update the user record for 'lastlogin'. I want to update 'lastlogout' when the user clicks logout or when the $_SESSION variable expires.

Upvotes: 5

Views: 5044

Answers (2)

Exos
Exos

Reputation: 3988

Try settings callbacks in session_set_save_handler on close and gc (garbage collector).

Upvotes: 5

Aleks G
Aleks G

Reputation: 57316

You can use javascript for this in about this way:

<?php

...
$currentTimeoutInMillis = ini_get(’session.gc_maxlifetime’) * 1000;

print "<script type='text/javascript'>\n";
print "<!--\n";
print "setTimeout('window.location.href=\"timeout.php\"', $currentTimeoutInMillis);\n";
print "//-->\n";
...

?>

Then your timeout.php will be called automatically when the timeout period is exhausted. In this script, by this time, the $_SESSION content is already lost (garbage-collected) - and you can make your database calls to update user's record.

Upvotes: -1

Related Questions