控制会话PHP的持续时间

时间:2015-05-04 04:14:56

标签: javascript php ajax

我是网络开发的初学者。我花了一些时间来实现限制PHP中的会话时间的方法。我已经阅读了Stackoverflow的建议,但它们似乎都不适用于我(cookies - 可能由用户编辑,AJAX通信 - 服务器上的额外负载和静态PHP - 浏览器中的被动标签怎么样?使用会话变量进行验证)。

我记得这个:

<script type="text/javascript">
    $(document).ready(function() {
        setTimeout(function() {
            window.location.href = 'logout.php';
        }, 10000);
    });
</script>

...限制用户的会话时间。该系统将用于管理Web应用程序。任何人都可以指出我的方法的潜在缺点,因为它看起来太简单了不好吗?

1 个答案:

答案 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分钟的会话。