我正在寻找我的答案的解决方案,这已经完成了一半我必须让用户从我的网站注销,我使用的解决方案如下: -
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;
并且它工作正常,但我需要在会话即将到期时有一个警告框。尝试很多东西但没有帮助。请回复并感谢你的精彩演示
答案 0 :(得分:0)
答案 1 :(得分: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来调整警报消息时间。
答案 2 :(得分:0)
由于每次重新加载页面时会话过期都会重置,因此您可以将过期时间用作JavaScript setTimeout()
函数的时间参数。
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()
函数将重新启动。