首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于不活动而导致的会话超时+警告框

问由于不活动而导致的会话超时+警告框
EN

Stack Overflow用户
提问于 2013-08-14 16:18:08
回答 2查看 9.7K关注 0票数 1

我正在寻找我的答案的解决方案,这是一半完成我必须使用户从我的网站注销,我使用了你的解决方案,这是如下:-

代码语言:javascript
复制
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;

这是完美的工作,但我需要有一个提示框,当会议即将expire.Try很多东西,但没有help.Please回复,感谢你的精彩演示

EN

回答 2

Stack Overflow用户

发布于 2013-08-14 16:38:36

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

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

代码语言:javascript
复制
<?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来调整提醒消息的时间。

票数 0
EN

Stack Overflow用户

发布于 2020-09-12 05:22:52

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

代码语言:javascript
复制
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()函数将重新启动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18226516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档