Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Scadenza sessioni

  1. #1

    Scadenza sessioni

    Vorrei far durare la sessione per 60 minuti invece di 24 e fare in modo che non scada immediatamente alla chiusura del browser ma che duri sempre 60 minuti.

    Ho provato ad inserire prima di session_start():

    Codice PHP:
    ini_set (session.gc_maxlifetime“3600”);
    ini_set (session.cookie_lifetime“3600”); 
    supponendo che la prima istruzione facesse durare la sessione per 60 minuti invece che 24, mentre la seconda istruzione facesse durare il SID per 60 minuti invece che 0 valore di default che lo elimina immediatamente alla chiusura del browser.

    A quanto pare non funziona né la prima né la seconda istruzione sia che la testi in locale che sul sito; ho pure un dubbio se le due righe vanno inserite prima o dopo l'apertura di sessione ma in entrambi i casi non funzionano. Per verificare se la durata della sessione viene settata come voglio la porto ad 1 secondo con ini_set (session.gc_maxlifetime, “1”); come indicato in un thread per non aspettare ad ogni prova un'ora. Supponendo che se dopo un secondo di inattività la sessione si cancella il codice funziona anche a 3600 secondi. Purtroppo ciò non si verifica.

    Dopo dato un'occhiata a diversi threads tra cui:
    http://forum.html.it/forum/showthrea...urata+sessione
    http://forum.html.it/forum/showthrea...urata+sessione
    ed a due manuali ho parecchia confusione.

  2. #2
    ti son sfuggiti gli apici.

    codice:
    ini_set ('session.gc_maxlifetime', '3600');
    ini_set ('session.cookie_lifetime', '3600');
    ovviamento vanno messi prima di session_start() ed in tutte le pagine oppure in .htaccess

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie. Avrei ancora alcune domande: quando dici
    in tutte le pagine oppure in .htaccess
    intendi dire che in tutte le pagine che utilizzano le variabili di sessione, prima dell'apertura della sessione devo settare l'ini e non è quindi sufficiente settarlo nella pagina che imposta i valori delle variabili di sessione?
    Ed in .htaccess come andrebbe settato l'ini? Ad esempio così potrebbe andar bene?:
    Codice PHP:
    ini_set ('session.gc_maxlifetime''3600');
    ini_set ('session.cookie_lifetime''3600');
    AuthType Basic
    AuthUserFile C
    :/Programmi/Apache/.htpasswd
    AuthName 
    "Restricted"
    <LIMIT GET POST>
    require 
    valid-user
    </LIMIT
    ed in questo caso è sufficiente inserire il settaggio dell'ini nel file .htaccess?
    Ciao.

  4. #4
    codice:
    php_flag	"session.gc_maxlifetime"	"3600"
    php_flag	"session.cookie_lifetime"	"3600"
    .htaccess non e' del php ma di apache

    Se invece lo metti nello script prima di session_start() ovvio che va in tutte le pagine, altrimenti vengono letti i valori inseriti in php.ini

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Sembra tutto chiaro, però mentre
    ini_set ('session.cookie_lifetime', '3600');
    funziona,
    ini_set ('session.gc_maxlifetime', '3600');
    sembra non funzionare, senza dare avvisi.
    Poiché li utilizzo accoppiati non credo di avere saltato qualche pagina visto che la prima riga funziona; è possibile che il gestore abbia in qualche modo bloccato il settaggio di session.gc_maxlifetime?

  6. #6
    settando il tempo di validita' del cookie di sessione non significa che chiudendo il browser il cookie continua ad essere valido. Dipende anche da come il browser gestisce i cookie di sessione, ma essendo temporanei questi cookie vengono tenuti solo in memoria e non scritti su disco. Se abbandoni la pagina e poi torni sulla pagina protetta entro 10 minuti il cookie resta valido, ma se chiudi il broswer non c'e' ciccia per i gatti....

    Direi quindi che il settare il tempo al cookie di sessione stabilisca la sua durata di validita', sempre per 10 minuti nel tuo caso, a partire dal momento dell'ultima pagina visitata (ultimo session_start() ). Il cookie viene riaggiornato ogni volta, mentre con il tempo a 0 il cookie dura fino a quando non si chiudera' il browser. Lo stesso accade lato server al file di sessione, ad ogni session_start() viene azzerato il timeout di scadenza.

    in pratica ultima apertura del file di sessione + il timeout di "session.gc_maxlifetime" => time() ed il session_id non e' piu' valido.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Scusami se sono insistente. Ora mi funziona così: eseguo il login; se chiudo il browser, lo riapro ad accedo al sito sono ancora loggato; dopo 24 minuti di inattività viene cancellata la sessione. Le cose che non capisco sono: perchè mi parli di 10 minuti, visto che nello script uso 3600 secondi ovvero 60 minuti; perchè se imposto
    ini_set ('session.gc_maxlifetime', '3600');
    non mi cancella la sessione dopo 3600 secondi di inattività ovvero
    ultima apertura del file di sessione + il timeout di "session.gc_maxlifetime" => time()
    E' chiaro che la durata della sessione incide anche sulla durata del SID, perchè anche se il SID rimane in memoria per 3600 secondi, quando la sessione scade dopo 1440 secondi il SID non serve più a nulla. Proprio per questo voglio portare la durata della sessione a 3600 secondi dopo l'ultimo aggiornamento al sito.
    Poi dici
    Se abbandoni la pagina e poi torni sulla pagina protetta entro 10 minuti il cookie resta valido, ma se chiudi il broswer non c'e' ciccia per i gatti....
    ed in verità come ho scritto sopra se chiudo il browser e poi riaccedo al sito sono ancora loggato. :master:

  8. #8
    ho scritto 10 minuti tanto per dire un tempo qualunque. Metti quello che ti pare.

    Il cookie lato client non e' gestibile con certezza. Per esempio personalmente uso opera o firefox ed entrambi vengono "ripuliti" automaticamente di tutto ad ogni chiusura del browser.

    Quindi, come detto, dipendera' dal settaggio del browser, ingestibile lato server, e quindi inaffidabile. Lo lascierei come previsto dal default.

    Poi il SID NON viene memorizzato da alcuna parte, ma viene letta la data/ora dell'ultima modifica del file di sessione se viene passato un SID valido dal cookie.

    (data/ora ultima modifica del file di sessione + timeout impostato) < time()

    se la condizione e' vera significa che il timeout di validita' sessione e' stato superato ed il contenuto del file non e' piu valido. Occhio dico il contenuto del file e non l'id di sessione che potrebbe anche essere ripreso. Poi che succedera' in questo caso, dipendera' da come hai impostato i controlli sui dati contenuti nella sessione, ovviamente.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Grazie per la spiegazione. Suppongo che in queso forum i dati d'accesso sono impostati con i cookie dato che se non eseguo il login resto connesso per giorni; farò altrettanto nel mio caso. Ciao.

  10. #10
    Originariamente inviato da giancarlo75
    Grazie per la spiegazione. Suppongo che in queso forum i dati d'accesso sono impostati con i cookie dato che se non eseguo il login resto connesso per giorni; farò altrettanto nel mio caso. Ciao.
    Ovviamente non sono usate le sessioni del php. Sono sessioni "alternative" su database. Esiste un articolo di GM a tal proposito.

    http://php.html.it/articoli/leggi/87...tive-in-php/1/


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.