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

发布于 2024-11-17 01:26:58 字数 289 浏览 2 评论 0原文

我有 $_SESSION 变量,其中包含用户登录用户名,并且设置了默认会话寿命(我认为是 24 分钟)。我想知道是否有办法在会话超时时执行函数。

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

我的推理:当用户登录时,我向数据库报告并更新“lastlogin”的用户记录。我想在用户单击注销或 $_SESSION 变量过期时更新“lastlogout”。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

<逆流佳人身旁 2024-11-24 01:26:58

尝试在关闭和GC(垃圾集电极)。

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

我家小可爱 2024-11-24 01:26:58

您可以通过以下方式使用 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 内容已丢失(垃圾收集) - 您可以调用数据库来更新用户记录。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文