我是网络开发的初学者。我花了一些时间来实现限制PHP中的会话时间的方法。我已经阅读了Stackoverflow的建议,但它们似乎都不适用于我(cookies - 可能由用户编辑,AJAX通信 - 服务器上的额外负载和静态PHP - 浏览器中的被动标签怎么样?使用会话变量进行验证)。
我记得这个:
<script type="text/javascript">
$(document).ready(function() {
setTimeout(function() {
window.location.href = 'logout.php';
}, 10000);
});
</script>
...限制用户的会话时间。该系统将用于管理Web应用程序。任何人都可以指出我的方法的潜在缺点,因为它看起来太简单了不好吗?
答案 0 :(得分:0)
<?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();
在每个php页面上调用check_user_is_valid()函数来检查用户是否有有效会话。如果页面仍然是30分钟,它将自动销毁会话。
使用每个页面上的新时间更新$ _SESSION [&#39; last_login&#39;]变量的值,以便用户为每个页面获得30分钟的会话。