Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [php] durata sessione

  1. #1

    [php] durata sessione

    Ciao,
    scrivo perchè a forza di leggere guide e messaggi ho le idee sempre più confuse su un tema che - immagino - deve essere molto semplice.

    Vengo al dunque: sto creando una sezione riservata nel mio sito quindi, dopo aver richiesto l'inserimento di user e password ed averne verificato la congruenza, creo una variabile di sessione in questa maniera:

    session_start();
    $_SESSION['utente'] = $utente;

    ...
    Come si imposta la scadenza della sessione ( tipo session.timeout di ASP)?

    Thx

  2. #2

  3. #3
    Ciao,
    la durata di una sessione viene determinata da due fattori:

    se usi i cookie

    1) la durata del cookie che invii all'utente per identificarlo

    ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
    session.cookie_lifetime = 0

    2) il tempo che intercorre tra la scadenza del file con i dati di sessione

    ; After this number of seconds, stored data will be seen as 'garbage' and
    ; cleaned up by the garbage collection process.
    session.gc_maxlifetime = 1440

    e quello in cui la garbage collection si accorge di questa scadenza (default ogni 1/100 accessi totali alle sessioni)

    ; Define the probability that the 'garbage collection' process is started
    ; on every session initialization.
    ; The probability is calculated by using gc_probability/gc_divisor,
    ; e.g. 1/100 means there is a 1% chance that the GC process starts
    ; on each request.

    session.gc_probability = 1
    session.gc_divisor = 100


    Se invii l'id di sessione attraverso l'url l'unica scadenza che ti interessa è quella relativa a al punto 2.

    Detto questo, per far sì che il proprietario di una sessione posa accedervi soltanto per n minuti dall'ultimo accesso, il modo più semplice è fare così

    session_start() ;

    //5 minuti
    $tempo_timeout = 300 ;

    //now
    $now= time() ;

    if(!isset($_SESSION['utente'])){

    //codice...codice...codice

    $_SESSION['utente']= $utente ;
    $_SESSION['last_in'] = $now ;

    }

    elseif( ($now - $_SESSION['last_in']) < $tempo_timeout){

    $_SESSION['last_in'] = $now ;
    //codice..codice...codice

    }
    else{

    $_SESSION=array() ;
    session_destroy() ;

    echo('Spiacenti sessione scaduta') ;

    }

    non l'ho testata ma funziona più o meno così
    per favore NIENTE PVT TECNICI da sconosciuti

  4. #4

    :)

    Sei un grande!
    Finalmente leggo qualcosa di chiaro.
    Adesso provo e ti faccio sapere l'esito...


  5. #5
    Già che ci siamo, qualcuno mi può dire se c'è un metodo "diretto" per calcolare la durata di una sessione? Mi servirebbe per avere statistiche di accesso al sito da parte dei vari utenti, ad esempio:
    l'utente: Pippo
    si è connesso il: 10/06/2004
    alle ore: 23.32
    è rimasto connesso per: 18 minuti

    Grazie mille!

  6. #6
    Up!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.