PHP - 如果达到会话超时,则阻止用户在网站中的操作

问题描述 投票:0回答:1

我正在构建一个网站,其中我希望会话超时为2分钟不活动,如果达到超时,则必须阻止网站中的操作,直到用户再次登录。我为会话编写了这段代码并且超时了:

session_start();

    $log_user = $reg_logout = "";
    $log_user_link = $log_user_link2 = $reg_logout_link = $reg_logout_link2 =  "";

    if(isset($_SESSION['name'])!="") {
        $log_user=$_SESSION['name'];
        $reg_logout="Logout";
        $log_user_link="php/personal.php"; //se sono nella home
        $log_user_link2="personal.php"; //se sono in altre pagine
        $reg_logout_link="php/logout.php"; //se sono nella home
        $reg_logout_link2="logout.php"; //se sono in altre pagine
    } else {
        $log_user="Login";
        $reg_logout="Registrati";
        $log_user_link="php/login.php"; //se sono nella home
        $log_user_link2="login.php"; //se sono in altre pagine
        $reg_logout_link="php/registration.php"; //se sono nella home
        $reg_logout_link2="registration.php"; //se sono in altre pagine
    }


    //Expire the session if user is inactive for 2 minutes or more.
    $expireAfter = 2;

    //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();

我已将此代码包含在我网站的所有页面中并且部分工作,因为如果我尝试更改页面2分钟后,则会强制注销用户;但是,如果我在一个页面,其中有一个表格与数据库交互(我必须有表格的页面,一个用于预订,一个用于删除它)我按下提交2分钟后,我的网站与数据库和之后强制注销。两分钟后如何阻止与数据库的交互?

php forms session-timeout
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.