PHP
Biscotti
Ricerca…
introduzione
Un cookie HTTP è una piccola porzione di dati inviati da un sito Web e memorizzati sul computer dell'utente dal browser Web dell'utente durante la navigazione dell'utente.
Sintassi
bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
Parametri
parametro | dettaglio |
---|---|
nome | Il nome del cookie. Questa è anche la chiave che puoi usare per recuperare il valore da $_COOKIE super global. Questo è l'unico parametro richiesto |
valore | Il valore da memorizzare nel cookie. Questi dati sono accessibili al browser quindi non memorizzare nulla di sensibile qui. |
scadere | Un timestamp Unix che rappresenta quando il cookie dovrebbe scadere. Se impostato su zero il cookie scadrà alla fine della sessione. Se impostato su un numero inferiore al timestamp corrente di Unix, il cookie scadrà immediatamente. |
sentiero | L'ambito del cookie. Se impostato su / il cookie sarà disponibile all'interno dell'intero dominio. Se impostato su /some-path/ il cookie sarà disponibile solo in quel percorso e discendenti di quel percorso. Predefinito al percorso corrente del file in cui viene impostato il cookie. |
dominio | Il dominio o sottodominio su cui è disponibile il cookie. Se impostato sul dominio stackoverflow.com il cookie sarà disponibile per quel dominio e tutti i sottodomini. Se impostato su un sottodominio meta.stackoverflow.com il cookie sarà disponibile solo su tale sottodominio e tutti i sottodomini secondari. |
sicuro | Se impostato su TRUE il cookie verrà impostato solo se esiste una connessione HTTPS protetta tra il client e il server. |
HttpOnly | Specifica che il cookie deve essere reso disponibile solo tramite il protocollo HTTP / S e non dovrebbe essere disponibile per i linguaggi di scripting lato client come JavaScript. Disponibile solo in PHP 5.2 o versioni successive. |
Osservazioni
Vale la pena notare che il semplice setcookie
funzione setcookie
non metterà semplicemente i dati dati nell'array $_COOKIE
.
Ad esempio non ha senso fare:
setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value
Il valore non è ancora lì, non prima del caricamento della pagina successiva. La funzione setcookie
dice semplicemente " con la prossima connessione http comunica al client (browser) di impostare questo cookie ". Quindi, quando le intestazioni vengono inviate al browser, contengono questa intestazione del cookie. Il browser controlla quindi se il cookie non è ancora scaduto, e se non lo è, allora nella richiesta http invia il cookie al server e questo è quando PHP lo riceve e mette il contenuto nella matrice $_COOKIE
.
Impostazione di un cookie
Un cookie viene impostato utilizzando la funzione setcookie()
. Poiché i cookie fanno parte dell'intestazione HTTP, è necessario impostare i cookie prima di inviare qualsiasi output al browser.
Esempio:
setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params
Descrizione:
- Crea un cookie con nome
user
- (Opzionale) Il valore del cookie è
Tom
- (Facoltativo) Il cookie scadrà tra 1 giorno (86400 secondi)
- (Facoltativo) I cookie sono disponibili su tutto il sito web
/
- (Facoltativo) Il cookie viene inviato solo tramite HTTPS
- (Facoltativo) Cookie non accessibile ai linguaggi di scripting come JavaScript
È possibile accedere a un cookie creato o modificato solo su richieste successive (dove corrispondenza
path
edomain
) poiché il$_COOKIE
non viene popolato immediatamente con i nuovi dati.
Recupero di un cookie
Recupera e emette un cookie user
nome
Il valore di un cookie può essere recuperato utilizzando la variabile globale $_COOKIE
. esempio se abbiamo un cookie chiamato user
possiamo recuperarlo in questo modo
echo $_COOKIE['user'];
Modifica di un cookie
Il valore di un cookie può essere modificato reimpostando il cookie
setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already
I cookie fanno parte dell'intestazione HTTP, quindi è necessario chiamare
setcookie()
prima che qualsiasi output sia inviato al browser.
Quando si modifica un cookie, assicurarsi che il
path
edomain
parametri didomain
disetcookie()
corrispondano al cookie esistente o che venga creato un nuovo cookie.
La porzione di valore del cookie verrà automaticamente codificata in caso di invio del cookie e al momento della ricezione verrà automaticamente decodificata e assegnata a una variabile con lo stesso nome del nome del cookie
Verifica se un cookie è impostato
Usa la funzione isset()
sulla variabile $_COOKIE
per verificare se un cookie è impostato.
Esempio:
// PHP <7.0
if (isset($_COOKIE['user'])) {
// true, cookie is set
echo 'User is ' . $_COOKIE['user'];
else {
// false, cookie is not set
echo 'User is not logged in';
}
// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in';
Rimozione di un cookie
Per rimuovere un cookie, imposta il timestamp di scadenza in un momento nel passato. Questo innesca il meccanismo di rimozione del browser:
setcookie('user', '', time() - 3600, '/');
Quando elimini un cookie, assicurati che il
path
edomain
parametri didomain
disetcookie()
corrispondano al cookie che stai cercando di eliminare o che un nuovo cookie, che scade immediatamente, venga creato.
È anche una buona idea disinserire il valore $_COOKIE
nel caso in cui la pagina corrente lo usi:
unset($_COOKIE['user']);