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 .

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 e domain ) poiché il $_COOKIE non viene popolato immediatamente con i nuovi dati.

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'];

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 e domain parametri di domain di setcookie() 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

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'; 

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 e domain parametri di domain di setcookie() 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']);


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow