Il comportamento di queste funzioni è influenzato dalle impostazioni di php.ini.
Where a configuration setting may be set.
Il sistema di gestione delle sessioni supporta un numero di opzioni di configurazione che si possono inserire nel file php.ini. Di seguito un breve sommario.
session.save_handler
string
session.save_handler
definisce il nome
dell'handler che è utilizzato per salvare e caricare i dati
associati alla sessione. Il default è
files
. Si noti che le singole estensioni postono registrare
i propri save_handler
; gli handler registrati possono essere
ottenuti per una specifica installazione consultando
phpinfo(). Vedere anche
session_set_save_handler().
session.save_path
string
session.save_path
definisce l'argomento che
è passato all'handler di salvataggio. Se si sceglie l'handler di default
files, questo è il percorso in cui i file sono creati. Vedere anche
session_save_path().
C'è un argomento N
opzionale per questa direttiva che determina
il numero di livelli di cartelle su cui verranno distribuiti i file di
sessione. Per esempio, impostarlo a '5;/tmp'
può portare a creare un file di sessione con questo percorso:
/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
. Per usare N
occorre creare tutte queste
cartelle prima dell'utilizzo. Un piccolo shell script è presente in
ext/session per eseguire questo lavoro, si chiama
mod_files.sh, con una versione per Windows chiamata
mod_files.bat. Notare anche che se N
è
usato ed è maggiore di 0 il garbage collection automatico non
sarà eseguito, vedere un php.ini per ulteriori
informazioni. Inoltre, se si usa N
, assicurarsi di racchiudere
session.save_path
in
"doppie virgolette" poiché il separatore (;
) è
usato anche per i commenti in php.ini.
Il modulo di salvataggio file crea file utilizzando la modalità 600 di default.
Questa impostazione può essere cambiata con gli argomento opzionale MODE
:
N;MODE;/path
dove MODE
è la rappresentazione
ottale della modalità.
L'impostazione MODE
non ha effettu sul processo umask.
Se questo parametro viene impostato su una cartella leggibile da tutti, come /tmp (il default), altri utenti sul server possono abusare delle informazioni delle sessioni ottenendo la lista dei file in quella cartella.
Quando si utilizza l'argomento opzionale livelli di cartelle N
,
come descritto sopra, notare che utilizzare un valore più grande di 1 o 2 è
inappropriato per la maggior parte dei siti per la grande quantità di cartelle
richieste: per esempio, un valore di 3 implica che (2 ** session.sid_bits_per_character) ** 3
cartelle esistano nel filesystem, che può risultare in un sacco di spazio
e inode sprecati.
Utilizzare un N
maggiore di 2 solo se si è assolutamente
sicuri che il proprio sito sia grande abbastanza per richiederlo.
session.name
string
session.name
specifica il nome della
sessione usato come nome del cookie. Dovrebbe contenere solamente
caratteri alfanumerici. Il valore predefinito è PHPSESSID
.
Vedere anche session_name().
session.auto_start
bool
session.auto_start
specifica se
il modulo di sessione inizia automaticamente una sessione al momento della
richiesta. Il valore predefinito è 0
(disabilitato).
session.serialize_handler
string
session.serialize_handler
definisce il nome
dell'identificativo usato per serializzare/deserializzare i dati. I
formati supportati sono il formato di serializzazione (nome php_serialize
),
i formati interni di PHP (nome php
e
php_binary
) e WDDX (nome
wddx
). WDDX è disponibile solo se PHP è
compilato con il supporto WDDX
. php_serialize
è disponibile
da PHP 5.5.4. php_serialize
utilizza semplici
funzioni serialize/unserialize internamente e non ha
limitazioni che php
e php_binary
hanno. Vecchi identificativi per serializzare
non possono memorizzare indici numerici o indici di stringhe che contengono caratteri
speciali (|
e !
) in
$_SESSION. Utilizzare php_serialize
per evitare errori
legati agli indici numerici o a caratteri speciali alla chiusura dello script. Il valore predefinito
è php
.
session.gc_probability
int
session.gc_probability
in combinazione con
session.gc_divisor
è usato per gestire la probabilità
che la routine gc (garbage collection) venga eseguita.
Il valore predefinito è 1
. Vedere session.gc_divisor per i dettagli.
session.gc_divisor
int
session.gc_divisor
in combinazione con
session.gc_probability
definisce la probabilità
che la routine gc (garbage collection) venga eseguita ad ogni inizializzazione
di sessione.
La probabilità è calcolata usando gc_probability/gc_divisor,
es. 1/100 significa che c'è la probabilità del 1% che il processo GC parta
ad ogni richiesta.
session.gc_divisor
ha come valore predefinito 100
.
session.gc_maxlifetime
integer
session.gc_maxlifetime
specifica il numero
di secondi dopo i quali i dati verranno visti come 'spazzatura' e
potenzialmente ripuliti. La ripulitura (Garbage Collection) avviene durante l'avvio della sessione
(in base a session.gc_probability and
session.gc_divisor).
Nota: Se differenti script hanno differenti valori di
session.gc_maxlifetime
ma condividono lo stesso spazio di memorizzazione dei dati di sessione allora lo script con il valore minimo sarà quello che ripulirà i dati. In questo caso, utilizzare la direttiva assieme a session.save_path.
session.referer_check
string
session.referer_check
contiene la
sottostringa che si vuole cercare nel HTTP Referer. Se il
Referer è stato inviato dal client e la sottostringa non viene
trovata, il session id incorporato viene segnato come non valido.
Il valore predefinito è la stringa vuota.
session.entropy_file
string
session.entropy_file
fornisce il percorso a una
resource esterna (file) che sarà usata come una fonte addizionale
di entropia nel processo di creazione del session id. Esempi sono
/dev/random
o /dev/urandom
che sono disponibili in molti sistemi Unix.
Questa funzionalità è supportata su Winows dalla versione PHP 5.3.3. Impostare
session.entropy_length
a un valore diverso da zero
farà sì che PHP utilizzi come sorgente di entropia la Windows Random API.
Nota: Rimossa in PHP 7.1.0 In PHP 5.4.0
session.entropy_file
ha come valore predefinito/dev/urandom
o/dev/arandom
se è disponibile. In PHP 5.3.0 questa direttiva è lasciata vuota per impostazione predefinita.
session.entropy_length
int
session.entropy_length
specifica il numero
di bytes che saranno letti dal file specificato
qui sopra. Il valore predefinito è 32
.
Rimossa in PHP 7.1.0.
session.use_strict_mode
bool
session.use_strict_mode
specifica se il modulo
userà la modalità "strict session id". Se questa modalità è abilitata,
il modulo non accetta ID di sessione non inizializzati. Se il browser
invia un ID non inizializzato, un nuovo ID di sessione è inviato al browser.
Utilizzato la modalità strict, le applicazioni sono protette
da attacchi "session fixation".
Il valore predefinito è 0
(disabilitato).
Nota: L'abilitazione di
session.use_strict_mode
è obbligatoria per la sicurezza generale della sessione. A tutti i siti è consigliato di abilitarla. Per ulteriori dettagli vedere l'esempio di codice di session_create_id().
Se un gestore di sessione personalizzato registrato con session_set_save_handler()
non implementa SessionUpdateTimestampHandlerInterface::validateId(),
nè fornisce la callback validate_sid
, rispettivamente,
la modalità di ID di sessione rigorosa è effettivamente disabilitata, indipendentemente dal valore di questa direttiva.
Da notare in particolare che SessionHandler non
implementa SessionHandler::validateId().
session.use_cookies
specifica se il
modulo userà i cookie per salvare il session id sul client
Il valore predefinito è 1
(abilitato).
session.use_only_cookies
specifica se
il modulo userà solo i
cookie per salvare il session id sul client.
L'abilitazione di questa impostazione previene gli attacchi che passano
session id nelle URL.
Il valore predefinito è 1
(abilitato) da PHP 5.3.0.
session.cookie_lifetime
specifica il tempo di vita
in secondi del cookie inviato al browser. Il valore 0
significa "finché il browser non viene chiuso". Il valore predefinito è
0
. Vedere anche
session_get_cookie_params() e
session_set_cookie_params().
Nota: Il timestamp di scadenza è impostato relativamente all'orario del server, che non è necessariamente lo stesso di quello del browser.
session.cookie_path
specifica il percorso da impostare
nel session_cookie. Il valore predefinito è /
. Vedere anche
session_get_cookie_params() e
session_set_cookie_params().
session.cookie_domain
specifica il dominio da
impostare nel session_cookie. Il valore predefinito è vuoto, che corridponde al nome dell'host
del server che ha generato il cookie, secondo le specifiche dei cookie.
Vedere anche session_get_cookie_params() e
session_set_cookie_params().
session.cookie_secure
specifica se i
cookie devono essere mandati solo su connessioni sicure. Il valore predefinito è
off
.
Vedere anche
session_get_cookie_params() e
session_set_cookie_params().
Lax
e Strict
indicano che il cookie
non verrà inviato per richieste POST cross-domain; Lax
invierà il cookie per richieste GET cross-domain, mentre Strict
non lo farà.
session.cache_limiter
string
session.cache_limiter
specifica il metodo
di controllo della cache da usare per le pagine di sessione.
Può essere uno dei seguenti valori:
nocache
, private
,
private_no_expire
o public
.
Il valore predefinito è nocache
. Vedere anche
la documentazione di session_cache_limiter() per
informazioni sul significato di questi valori.
session.cache_expire
int
session.cache_expire
specifica il tempo di vita
in minuti delle pagine di sessione, non ha effetto se il cache_limiter
è nocache. Il valore predefinito è 180
. Vedere anche
session_cache_expire().
session.use_trans_sid
bool
session.use_trans_sid
Specifica se il supporto trasparente
del sid è abilitato o no. Il valore predefinito è
0
(disabled).
Nota: La gestione della sessione basata sulle URL ha dei rischi di sicurezza maggiori rapportata alla gestione basata sui cookie. Per esempio, gli utenti possono inviare una URL che contiene un ID di sessione attivo ai proprio amici via email oppure gli utenti possono salvare una URL che contiene un ID di sessione nei preferiti ed accedere al sito sempre con lo stesso ID. Da PHP 7.1.0, il percorso URL completo, p.es. https://php.net/, è gestito dalla funzionalità trans sid. In precedenza PHP gestiva solo i percorsi URL relativi. Gli host rewrite target sono definiti da session.trans_sid_hosts.
session.trans_sid_tags
specifica quali tag HTML
devono essere riscritti per includere l'id della sessione quando il supporto transparent sid
è abilitato. Il valore predefinito è
a=href,area=href,frame=src,input=src,form=
form
è un tag speciale. Viene aggiunto
<input hidden="session_id" name="session_name">
come variabile del form.
Nota: Prima di PHP 7.1.0, per questo scopo veniva utilizzato url_rewriter.tags. Da PHP 7.1.0,
fieldset
non viene più considerato un tag speciale.
session.trans_sid_hosts
string
session.trans_sid_hosts
specifica quali host
devono essere riscritti per includere l'id della sessione quando il supporto transparent sid
è abilitato. Il valore predefinito è $_SERVER['HTTP_HOST']
Possono essere specificati host multipli con ",", non è permesso nessuno spazio
tra gli host. p.es. php.net,wiki.php.net,bugs.php.net
session.sid_length
int
session.sid_length
permette di specificare la
lunghezza della stringa ID della sessione. La lunghezza dell'ID della sessione può essere compresa tra 22
e 256.
Il valore predefinito è 32. Se si necessita di compatibilità si può specificare 32,
40, ecc. Un ID di sessione più lungo è più difficile da indovinare. È raccomandato utilizzare
almeno 32 caratteri.
Note di compatibilità: Utilizzare 32 invece di
session.hash_function
=0 (MD5) e
session.hash_bits_per_character
=4,
session.hash_function
=1 (SHA1) e
session.hash_bits_per_character
=6. Utilizzare 26 invece di
session.hash_function
=0 (MD5) e
session.hash_bits_per_character
=5. Utilizzare 22 invece di
session.hash_function
=0 (MD5) e
session.hash_bits_per_character
=6. È necessario
configurare i valori INI per avere almeno 128 bit nell'ID della sessione. È importante non
dimenticare di impostare un valore appropriato a
session.sid_bits_per_character
, altrimenti si
avrà un'ID di sessione più debole.
Nota: Questa impostazione è stata introdotta in PHP 7.1.0.
session.sid_bits_per_character
int
session.sid_per_character
permette di specificare il
numero di bit dei caratteri dell'ID della sessione codificata. I valori possibili sono
'4' (0-9, a-f), '5' (0-9, a-v), e '6' (0-9, a-z, A-Z, "-", ",").
Il valore predefinito è 4. Più bit porteranno ad un ID della sessione più forte. 5 è
il valore raccomandato per la maggior parte degli ambienti.
Nota: Questa impostazione è stata introdotta in PHP 7.1.0.
session.hash_function
mixed
session.hash_function
permete di specificare l'algoritmo di hashing
usato per generare l'ID di sessione. '0' significa MD5 (128 bit) e
'1' significa SHA-1 (160 bit).
Da PHP 5.3.0 è possibile anche specificare uno degli algoritmi
forniti dall'estensione hash (se è
disponibile), come sha512
o
whirlpool
. Una lista completa degli algoritmi disponibili può
essere ottenuta con la funzione hash_algos().
Nota: Questo è stata introdotto in PHP 5. Rimosso in PHP 7.1.0.
session.hash_bits_per_character
int
session.hash_bits_per_character
permette di definire
quanti bit sono memorizzati in ogni carattere quando si converte il dato binario
dell'hash in forma leggibile. I valori possibile sono '4' (0-9, a-f),
'5' (0-9, a-v), e '6' (0-9, a-z, A-Z, "-", ",").
Nota: Rimosso in PHP 7.1.0.
session.upload_progress.enabled
bool
session.upload_progress.cleanup
bool
Nota: Si consiglia vivamente di mantenere abilitata questa funzionalità.
session.upload_progress.prefix
string
$_POST[ini_get("session.upload_progress.name")]
per
fornire un indice unico.
Il valore predefinito è "upload_progress_".
session.upload_progress.name
string
$_POST[ini_get("session.upload_progress.name")]
non viene fornito o non è disponibile, l'avanzamento dell'upload non sarà registrato.
Il valore predefinito è "PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freq
mixed
session.upload_progress.min-freq
int
session.lazy_write
bool
session.lazy_write
, quando impostato a 1, indica che i dati della
sessione sono riscritti solo se ci sono cambiamenti. Il valore predefinito è 1, abilitato.
L'avanzamento dell'upload non viene registrato a meno che session.upload_progress.enabled non sia attivata, e la variabile $_POST[ini_get("session.upload_progress.name")] impostata. Vedere Avanzamento dell'upload di sessione per ulteriori dettagli su questa funzionalità.