2011-01-01 13 views
5

Sono stato a questo per un giorno ora, ma niente sembra funzionare. Cosa voglio fare: modificare il tempo di scadenza del cookie di sessione PHPSESSID, quando viene selezionata una determinata casella, come posso fare? ho provato:Modifica il tempo di scadenza di PHPSESSID Cookie

ini_set()

session_set_cookie_params()

setcookie()

ma niente funziona. Qualcuno può per favore aiutarmi qui?

Grazie

+0

1. Non dovresti farlo. –

+0

2. Non ti aiuterà comunque –

risposta

10

Per specificare la durata della sessione, lato server, sia applicare il seguente comando

ini_set('session.gc_maxlifetime', 30*60); // expires in 30 minutes 

o impostate nel file php.ini.

Per impostare il cookie di durata della sessione, lato client, sia lasciare così com'è (0, morirà quando il browser viene chiuso), o

ini_set('session.cookie_lifetime', 30*60); // 30 minutes 

o nel php.ini.

Se si sceglie di utilizzare ini_set(), assicurati di inserire i comandi primasession_start() si chiama.

Si noti che la funzione ini_set imposta le opzioni di configurazione during the script execution time only.

Per quanto riguarda la casella di controllo e avere un ambiente dinamico della durata della sessione, si potrebbe

  • uso APC per memorizzare un ambiente condiviso da tutti i processi di PHP, che durerà fino a quando il server PHP è giù
  • write un valore in un file da qualche parte che si carica all'inizio di script (costoso) e impostare il valore

(ogni script dovrà ini_set() una volta prima session_start())

+0

grazie, ora capisco che il problema è che ini_set deve essere prima di session_start(). ma non riesco a capire come modificare il valore di un cookie phpessid esistente. –

+0

Sì, questo è il trucco per me. Per le mie chiamate ajax avevo bisogno di un modo per rilevare se la sessione è scaduta. Si noti che è necessario eliminare il cookie con la data di scadenza errata prima del test. –

Problemi correlati