2013-04-19 98 views
7

Ho un sito che crea una sessione per carrelli della spesa.Tempo di scadenza sessioni PHP - mantenimento della sessione per un numero specifico di minuti/ore/giorni

$_SESSION['cart']=array(); 

Sembra come se il server uccide automaticamente la sessione dopo il tempo X di inattività, presumo questo è impostato in php.ini (ma il mio ospite non mi concede l'accesso, mi lasciano dire loro i cambiamenti , quindi non posso giocare! :().

c'è un modo migliore per mantenere le sessioni di vita, ad esempio per 2 giorni o per un determinato numero di minuti/ore?

+1

modificare le varie 'sessione. *' Impostazioni utilizzando 'ini_set()' ** PRIMA ** chiami session_start(): http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime –

risposta

13

chiamata session_set_cookie_params() prima di chiamare session_start() nei tuoi script:

$session_lifetime = 3600 * 24 * 2; // 2 days 
session_set_cookie_params ($session_lifetime); 
session_start(); 
// ... 

Dal documentation:

session_set_cookie_params()
Impostare i parametri del cookie definiti nel file php.ini. L'effetto di questa funzione dura solo per la durata dello script. Pertanto, è necessario chiamare session_set_cookie_params() per ogni richiesta e prima che venga chiamato session_start().

In alternativa, è possibile aggiornare la direttiva session.cookie_lifetime del file php.ini a 2 giorni (in secondi).

+1

ouh ... la tua risposta è migliore della mia;) –

1

impostare un cookie e il cambiamento in voi di configurazione che utilizzano i cookies di sessione

session_start(); 
set_cookie("PHPSESSID", session_id(), time() + 3600 * 2); 

questo mantengono viva la sessione per 2 ore

+0

purtroppo non funziona. Vedere la mia domanda qui: http://stackoverflow.com/questions/38566461/keep-only-specific-sessions-alive-for-several-weeks?noredirect=1#comment64522757_38566461 –