Javascript 会话到期时自动重定向
如何在会话到期时(自动)重定向页面,而不在页面上执行任何用户操作。创建一个活动检查器,每分钟检查是否发生了任何用户活动(鼠标单击、按键)并向服务器端执行心跳,以在用户处于活动状态时保持会话活动,而在用户处于非活动状态时不执行任何操作。当30分钟内没有活动时(或服务器端设置的任何默认会话超时),则执行重定向 下面是一个启动示例,它对绑定单击和按键事件以及激发ajax请求几乎没有帮助Javascript 会话到期时自动重定向,javascript,jsp,Javascript,Jsp,如何在会话到期时(自动)重定向页面,而不在页面上执行任何用户操作。创建一个活动检查器,每分钟检查是否发生了任何用户活动(鼠标单击、按键)并向服务器端执行心跳,以在用户处于活动状态时保持会话活动,而在用户处于非活动状态时不执行任何操作。当30分钟内没有活动时(或服务器端设置的任何默认会话超时),则执行重定向 下面是一个启动示例,它对绑定单击和按键事件以及激发ajax请求几乎没有帮助 <script src="http://code.jquery.com/jquery-latest.min.j
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$.active = false;
$('body').bind('click keypress', function() { $.active = true; });
checkActivity(1800000, 60000, 0); // timeout = 30 minutes, interval = 1 minute.
});
function checkActivity(timeout, interval, elapsed) {
if ($.active) {
elapsed = 0;
$.active = false;
$.get('heartbeat');
}
if (elapsed < timeout) {
elapsed += interval;
setTimeout(function() {
checkActivity(timeout, interval, elapsed);
}, interval);
} else {
window.location = 'http://example.com/expired'; // Redirect to "session expired" page.
}
}
</script>
保持会话活动。创建一个活动检查器,每分钟检查是否发生了任何用户活动(鼠标单击、按键),并向服务器端执行心跳信号,以在用户处于活动状态时保持会话活动,而在用户未处于活动状态时不执行任何操作。当30分钟内没有活动时(或服务器端设置的任何默认会话超时),则执行重定向 下面是一个启动示例,它对绑定单击和按键事件以及激发ajax请求几乎没有帮助
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$.active = false;
$('body').bind('click keypress', function() { $.active = true; });
checkActivity(1800000, 60000, 0); // timeout = 30 minutes, interval = 1 minute.
});
function checkActivity(timeout, interval, elapsed) {
if ($.active) {
elapsed = 0;
$.active = false;
$.get('heartbeat');
}
if (elapsed < timeout) {
elapsed += interval;
setTimeout(function() {
checkActivity(timeout, interval, elapsed);
}, interval);
} else {
window.location = 'http://example.com/expired'; // Redirect to "session expired" page.
}
}
</script>
使会话保持活动状态。是特定于页面的超时,还是只是一般会话超时?也就是说,从某人登陆页面的那一刻起,启动计时器,或者在创建会话时,启动计时器?您可以使用ajax ping服务器进行检查。或者在每页的基础上设置一个元刷新时间?如果我每次调用Ajax时都向服务器调用use timer和Ajax函数,会话将被重新创建。。?如何在不重新创建会话的情况下访问会话变量?如果在首次启动会话时创建了会话变量,则可以通过调用会话_start()随时检查此变量计时器;然后检查$_会话['timer'];除非你主动重置计时器,否则计时器不会重置。我想你没有明白我的问题。我有一个页面,我需要继续查看会话是否过期。代码应该是客户端(java脚本),不能是服务器端代码,因为它永远不会允许会话过期。这是一个特定于页面的超时,还是只是一个一般的会话超时?也就是说,从某人登陆页面的那一刻起,启动计时器,或者在创建会话时,启动计时器?您可以使用ajax ping服务器进行检查。或者在每页的基础上设置一个元刷新时间?如果我每次调用Ajax时都向服务器调用use timer和Ajax函数,会话将被重新创建。。?如何在不重新创建会话的情况下访问会话变量?如果在首次启动会话时创建了会话变量,则可以通过调用会话_start()随时检查此变量计时器;然后检查$_会话['timer'];除非你主动重置计时器,否则计时器不会重置。我想你没有明白我的问题。我有一个页面,我需要继续查看会话是否过期。代码应该是客户端(java脚本),它不能是服务器端代码,因为它永远不会允许会话过期。确实是您有史以来最好的答案之一,这应该是+1000确实是您有史以来最好的答案之一,这应该是+1000