Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    cade la sessione troppo presto

    ciao a tutti nel sito che ho sul server di "Aruba" se non interagisco per pochi minuti mi cade la sessione e mi tocca rifare il login, c'è un modo per prolungare il tempo di questa sessione?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ho messo questo prima di session_start ma pare che non funzioni, dopo 10 minuti scade lo stesso, e io l'avevo settato a 5 ore!

    <?
    session_set_cookie_params(60*300);
    session_start();
    ?>

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    vedi se puoi settare con ini.set il maxlifetime (l'ultimo link che ti ha dato filippo).

    session.gc_maxlifetime specifies the number of seconds after which data will be seen as 'garbage' and cleaned up. Garbage collection occurs during session start.
    Se non puoi settare in nessun modo quei valori, anche se non è una soluzione proprio pulita puoi mettere nell'onload della pagina una funzione javascript che venga eseguita ogni 9 minuti, e che chiami via ajax una pagina php che lancia semplicemente un session_start().


  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Originariamente inviato da gianiaz
    vedi se puoi settare con ini.set il maxlifetime (l'ultimo link che ti ha dato filippo).

    Se non puoi settare in nessun modo quei valori, anche se non è una soluzione proprio pulita puoi mettere nell'onload della pagina una funzione javascript che venga eseguita ogni 9 minuti, e che chiami via ajax una pagina php che lancia semplicemente un session_start().

    Ma in quale occasione session_set_cookie_params funziona?

    Il mio sito non'è il localhost ma si trova su un server a pagamento, maxlifetime va bene anche se non'è in localhost?

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    bhe non c'è differenza tra localhost e server online, i parametri sono sempre gli stessi, il problema potrebbe essere che il php sia configurato in modo da non permetterti di modificare questi valori.

    Il funzionamento della sessione dipende da tutti i parametri che ti ha fornito filippo.

    In questo caso, se tu fai "vivere" per un maggior tempo il cookie contenente l'id di sessione, ma poi il maxlifetime ha un tempo di durata minore, quando viene fornito l'id di sessione tramite il cookie il server non lo trova e fa partire una nuova sessione con l'id che hai fornito.

    Viceversa se la sessione vive a lungo, ma tu non sei più in grado di fornire l'id perchè il cookie è scaduto ti ritrovi con una nuova sessione con id diverso.

    Gli altri 2 parametri che ti ha fornito filippo invece servono al server per decidere ogni quanto cancellare il garbage collector delle sessioni.

    Infatti dietro al meccanismo di cancellazione c'è tutto un discorso di probabilità, se tu metti che la scadenza della sessione è di 30 minuti, non è detto che al 30 minuto e un secondo non la trovi più, perchè magari il calcolo probabilistico che c'è dietro non fa scattare al 30 minuto la cancellazione della sessione.

    Diciamo che se setti un valore alto nei 2 parametri maxlifetime e session_set_cookie_params sei sicuro che in quel tempo la sessione non scada.

    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Per quel poco che ho capito (sono uno sviluppatore autodidatta di basso livello ), ti posso dire che io i cookie non li uso, o forse li usa Aruba per la sessione, non lo so.
    Per il discorso del maxlifetime mi dici che devo settare ini.set ma il sito stando su Aruba non credo possa farlo.
    Non saprei come risolvere il problema.

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Quando salvi in sessione un dato, viene messo in un array ($_SESSION), quest'array viene serializzato (se vuoi guarda la funzione serialize()), e scritto in un file sul server, dandogli come nome l'id della sessione.

    A questo punto ogni volta che tu lanci il session_start viene letto e unserializzato il file con nome = all'id di sessione che fornisce il browser.

    L'id di sessione può essere fornito dal browser in diversi modi a seconda di come è configurato il server (in genere tramite GET o cookie), qui sul forum di html in tutti e due i modi (non so perchè).

    Tutti questi passaggi che ti ho descritto avvengono in automatico, e non sei tu a creare il cookie, ma direttamente il meccanismo che sta dietro alla configurazione del server.

    Tornando al tuo problema, dovresti provare a mettere all'inizio dei tuoi files php questa istruzione :

    codice:
    ini_set('session.gc_maxlifetime', '1440'); // sono secondi, quindi 24 minuti
    E poi vedi cosa succede, non è detto che ti sia permesso modificare questo valore, che comunque io sul server che hai menzionato non ho mai trovato a 10 minuti.

    Se non puoi settare questi valori la via alternativa è quella che ti dicevo riguardo a una chiamata ajax periodica, che non fa altro che rinnovare il tempo di inizio della sessione, in modo da far ripartire il contatore.

    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ok grazie delle delucidazioni, ora provo.

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ha funzionato

    <?
    ini_set('session.gc_maxlifetime', '1440');
    session_set_cookie_params(60*300);
    session_start();
    ?>

    l'ho provato con entrambe le istruzioni

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.