1

我正在寻找已完成一半的答案的解决方案我必须让用户从我的网站注销,我使用了您的解决方案,如下所示:-

if( $_SESSION['last_activity'] < time()-$_SESSION['expire_time'] ) {

 //have we expired?
    //redirect to logout.php
    header('Location: '.BASE_FULL_PATH.'/user/logout'); //change yoursite.com to the name of you site!!
} else{ //if we haven't expired:
    $_SESSION['last_activity'] = time(); //this was the moment of last activity.
}
$_SESSION['logged_in'] = true; 
$_SESSION['last_activity'] = time(); 
$_SESSION['expire_time'] = 24*60*60;

它工作得很好,但是当会话即将到期时我需要一个警告框。尝试很多东西但没有帮助。请回复并感谢您的精彩演示

4

2 回答 2

0

我知道,这不是一种有效的方法,但你可以试试这个。尝试 ajax,每隔 5 或 10 秒的时间间隔在服务器中运行一个 php 文件。

运行 php 的 ajax 文件包含会话 last_activity 和 expire_time 比较代码,

<?php
$warning=100;
if( $_SESSION['last_activity']+warning < time()-$_SESSION['expire_time'] ) {
?>
<script type="text/javascript">
alert("Your session will expire soon!");
</script>
<?php
}
?>

您可以设置变量 $warning 来调整警报消息时间。

于 2013-08-14T08:38:36.443 回答
0

由于每次重新加载页面时会话到期都会重置,因此您可以使用到期时间作为 JavaScriptsetTimeout()函数的时间参数。

var sessionExpiryTime = 24 * 60 * 60;
var sessionExpiryAlertTime  = sessionExpiryTime - 5; //assuming we want the alert to show 5 seconds before expiry
setTimeout(function({ 
    alert("Session about to expire!");
}, sessionExpiryAlertTime * 1000); //time is in milliseconds so we multiply by 1000

只要用户启用了 JavaScript,它就可以正常工作。如果用户重新加载页面,到期计时器会根据您的 php 代码进行更新,并且setTimeout()函数会重新启动。

于 2020-09-11T21:22:51.500 回答