[PHP] Chiudere sessione quando la pagina viene riaggiornata

Discussione in 'PHP' iniziata da Cosina, 5 Dicembre 2018 alle 20:05.

  1. Cosina

    Cosina Nuovo Utente

    Registrato:
    27 Dicembre 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Femmina
    Ciao a tutti. Ho realizzato una pagina riservata con login usando php. Quando l'utente effettua il logout, la sessione viene cancellata e non e` piu` possibile accedere alla pagina riservata se non reinserendo i dati di accesso. Se si prova a raggiungere la pagina via URL, si viene reindirizzati alla home del sito. Tutto ok, ma se l'utente non effettua il logout, puo` rientrare nella pagina tutte le volte che vuole, anche se viene riaggiornata e anche se chiude e riapre il browser. Quello che vorrei, invece, e` che la sessione terminasse , quando l'utente lascia la pagina, anche se non ha effettuato manualmente il logout. E' possibile?
    Il codice della pagina di logout e` questo:

    PHP:
    <?php session_start(); /* Starts the session */
    session_destroy(); /* Destroy started session */
    header("location:../index");
    exit;
    ?>
    Grazie per l'aiuto
     
  2. Eduadie

    Eduadie Utente Attivo

    Registrato:
    22 Marzo 2013
    Messaggi:
    53
    Mi Piace Ricevuti:
    7
    Punteggio:
    8
    Che io sappia non esiste una tecnica per poterlo fare, potresti o controllare con Javascript la chiusura della scheda e quindi inviare una richiesta AJAX al server per cancellare la sessione (ovviamente se il Javascript è disabilitato questa modalità non funziona) oppure puoi usare la funzione che determina il tempo di vita della sessione, in modo da "abbatterla" prima che venga chiusa la finestra.
    La funzione oltre a determinare la vita, ne rinnova la scadenza se richiamata all'inizio di ogni pagina.
    Però una volta abbattuta, la sessione non può essere rinnovata, questi meccanismi vengono utilizzati solitamente nei siti web dove la sicurezza è importante, come area utenti di una banca, oppure mail box online.

    PHP:
    session_set_cookie_params(<secondi>);
    session_start();
     
  3. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.982
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    ti schematizzo quello che potrebbe essere un metodo
    1) pagina di log
    PHP:
    <?php
    session_start
    ();
    $_SESSION['caso']=rand(1000,9999);//tutte le volte ache accedi alla pagina si genera un numero casuale
    $per_form=md5($_SESSION['caso']);//md5 per confondere un po
    ?>
    <form action="accesso_si_no.php?vengo_da=<?php echo $per_form?>" method="post">
    <!-- i vari campi di input e submit necessari-->
    </form>
    2) pagina accesso_si_no.php (pagina senza una riga html che serve per fare le verifiche)
    PHP:
    <?php
    session_start
    ();
    if(
    md5($_SESSION['caso'])!=$_GET['vengo_da']){
        
    //distruggo la sessione e rimando es. alla index
    }else{
        
    //leggo i dati dal form e li verifico da db se utente registrato
        
    if($registrato){
            
    //ricreo la sessione casuale
            
    $_SESSION['caso']=rand(1000,9999);
            
    $per_riservata=md5($_SESSION['caso']);
            
    header('location:pagina_riservata.php?vengo_da=$per_riservata');
            exit();
        }else{
    //rimando alla index
       
    }
    }
    ?>
    3) pagina_riservata.php
    PHP:
    <?php
    session_start
    ();
    if(
    md5($_SESSION['caso'])!=$_GET['vengo_da'] || !isset($_SESSION['caso']) || !isset($_GET['vengo_da'])){
        
    //distruggo la sessione e rimando es. alla index
    }else{
        
    //elimino comunque la sessione tanto sino a che rimango nella pagina non mi serve
    ?>
    <html>
    <!-- tutto l'html o php che serve-->
    </html>
    <?php
    }
    ?>
    se esci dalla pagina riservata sensa il logout e cerchi di rientrare la sessione e il get non esistono piu o in caso di refresh sono diversi e quin non dovrei più riuscire ad entrare se non passando nuovamente dal log
    prova e sappimi dire se funziona
     
    A Eduadie piace questo elemento.
  4. Cosina

    Cosina Nuovo Utente

    Registrato:
    27 Dicembre 2016
    Messaggi:
    22
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Femmina
    Grazie mille a tutti per le risposte. Faccio le mie prove, nei prossimi giorni e poi vi faccio sapere. Ciao
     
Sto caricando...

Condividi questa Pagina