簡體   English   中英

php如何在會話超時時執行函數

[英]php how to execute function on session timeout

我有$_SESSION變量包含用戶登錄用戶名,默認會話生命設置(我認為24分鍾)。 我想知道是否有辦法在會話超時時執行一個函數。

我知道當用戶重新加載頁面並且會話變量已經過期時,我可以告訴頁面執行該功能但我正試圖找出服務器自己完成此操作的方法。 有這樣的方法嗎?

我的推理 :當用戶登錄時,我向我的數據庫報告並更新'lastlogin'的用戶記錄。 我想在用戶單擊logout或$_SESSION變量到期時更新'lastlogout'。

在close和gc(垃圾收集器)上嘗試session_set_save_handler中的設置回調。

您可以通過以下方式使用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內容已丟失(垃圾收集) - 您可以進行數據庫調用以更新用戶的記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM