Javascript 控制会话的持续时间
我是web开发的初学者。我花了一些时间来实现用PHP限制会话时间的方法。我读过Stackoverflow的建议,但似乎没有一个适合我(cookies可能由用户编辑,服务器上的AJAX通信额外负载和静态PHP-浏览器中的被动选项卡如何?使用会话变量进行验证) 我认为:Javascript 控制会话的持续时间,javascript,php,ajax,Javascript,Php,Ajax,我是web开发的初学者。我花了一些时间来实现用PHP限制会话时间的方法。我读过Stackoverflow的建议,但似乎没有一个适合我(cookies可能由用户编辑,服务器上的AJAX通信额外负载和静态PHP-浏览器中的被动选项卡如何?使用会话变量进行验证) 我认为: <script type="text/javascript"> $(document).ready(function() { setTimeout(function() {
<script type="text/javascript">
$(document).ready(function() {
setTimeout(function() {
window.location.href = 'logout.php';
}, 10000);
});
</script>
$(文档).ready(函数(){
setTimeout(函数(){
window.location.href='logout.php';
}, 10000);
});
…以限制用户的会话时间。此系统将用于管理web应用程序。有谁能指出我的方法的潜在缺点,因为它似乎太简单而不好用?
禁用Javascript很容易,并且会阻止它运行。此脚本的问题是每次加载此脚本时,浏览器都会在10秒内转到“logout.php”。当你刷新这个页面的时候,10秒的倒计时也会重新开始。谢谢,到目前为止,对我来说还不错。由于与用户和数据库的动态交互,我的系统将强制用户启用javascript。当用户处于非活动状态10秒(将增加)时,他将注销。因此,如果你在5分钟后打开另一个选项卡,而不关闭另一个选项卡,它将在5分钟后将你注销,而不是在10分钟后。你是对的,但我会避免这种行为。window.onblur location.reload能帮我解决这个问题吗?谢谢你的回答,但我认为你的方法不适用于浏览器中的被动选项卡。某些操作应该会触发此脚本。为什么不尝试使用ajax方法呢。您可以将此脚本放入ajax调用中,并可以在每次被动选项卡单击时检查会话值
<?php
function check_user_is_valid () {
//Start our session.
session_start();
//Expire the session if user is inactive for 30
//minutes or more.
$expireAfter = 30;
//Check to see if our "last action" session
//variable has been set.
if(isset($_SESSION['last_action'])){
//Figure out how many seconds have passed
//since the user was last active.
$secondsInactive = time()-$_SESSION['last_action'];
//Convert our minutes into seconds.
$expireAfterSeconds = $expireAfter * 60;
//Check to see if they have been inactive for too long.
if($secondsInactive >= $expireAfterSeconds){
//User has been inactive for too long.
//Kill their session.
session_unset();
session_destroy();
}
}
}
//Assign the current timestamp as the user's
//latest activity
$_SESSION['last_action'] = time();