Auto logout when closing browser

0

I use a SQLite database to log in to verify that the user exists. What I want to do is close the session when the browser window is closed. I have a page that logs out, if it is called.

$_SESSION = array();

if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}
session_destroy();      
    
asked by anonymous 15.11.2014 / 19:52

1 answer

0

If you want the session to close when it closes the window then use $ _SESSION instead of $ _COOKIE, now the session will only be destroyed when the entire Browser is closed and not just a tab.

What you can also do is to use a timestamp, for example, after 5 minutes if the user tries to use the page the session will be expired, so you need to save the timestamp in the session every time it loads any page , and then before saving the new timestamp check if the last load has been 5 minutes already

A rustic example:

page.php

<?php
    session_start();

    $tempo_limite_em_minutos = 5; // 5 minutos

    // se já foi definido vamos ver se a sessão ainda está valida
    if(isset($_SESSION['TEMPO'])){

        $tempo_desde_o_ultimo_carregamento = time() - $_SESSION['TEMPO'];
        if($tempo_desde_o_ultimo_carregamento / 60.0 > $tempo_limite_em_minutos){
            include 'logout.php';
            die();
        }

    }else{
        echo '<h1>Primeiro login</h1><br>';
    }

    // senão vamos apenas atualizar a sessão e mostra o conteudo que ele quer ver 
    $_SESSION['TEMPO'] = time();


echo '<h1>Você está logado</h1>
    <p>O php é uma ótima linguagem de programação, principalmente se você tem pouca memória no seu servidor</p>';

logout.php

<?php

    session_start();
    session_destroy();

    echo '<h1>Desculpe, a sua sessão expirou :/';
    
15.11.2014 / 23:10