php如何在会话超时时执行函数

时间:2011-06-23 20:36:30

标签: php authentication session-state session-timeout

我有$_SESSION个包含用户登录用户名的变量,这些变量具有默认的会话生命周期(我认为是24分钟)。我想知道是否有办法在会话超时时执行一个函数。

我知道当用户重新加载页面并且会话变量已过期时,我可以告诉页面执行该功能但我正试图找出服务器自行完成此操作的方法。有这样的方法吗?

我的推理:当用户登录时,我向我的数据库报告并更新'lastlogin'的用户记录。我想在用户点击退出或$_SESSION变量过期时更新'lastlogout'。

2 个答案:

答案 0 :(得分:5)

在close和gc(垃圾收集器)上尝试session_set_save_handler中的设置回调。

答案 1 :(得分:0)

您可以通过以下方式使用javascript:

<?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";
...

?>

然后,当超时时间用尽时,将自动调用timeout.php。在此脚本中,此时$ _SESSION内容已丢失(垃圾收集) - 您可以进行数据库调用以更新用户的记录。