PHP - Cookie

I cookie sono file di testo memorizzati sul computer client e vengono conservati per scopi di tracciamento dell'utilizzo. PHP supporta in modo trasparente i cookie HTTP.

Ci sono tre passaggi coinvolti nell'identificazione degli utenti di ritorno:

  • Lo script del server invia una serie di cookie al browser. Ad esempio nome, età o numero di identificazione ecc.

  • Il browser memorizza queste informazioni sulla macchina locale per un utilizzo futuro.

  • La volta successiva che il browser invia una richiesta al server Web, invia tali informazioni sui cookie al server e il server utilizza tali informazioni per identificare l'utente.

Questo capitolo ti insegnerà come impostare i cookie, come accedervi e come eliminarli.

L'anatomia di un biscotto

I cookie vengono solitamente impostati in un'intestazione HTTP (sebbene JavaScript possa anche impostare un cookie direttamente su un browser). Uno script PHP che imposta un cookie potrebbe inviare intestazioni che assomigliano a questo:

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=tutorialspoint.com
Connection: close
Content-Type: text/html

Come puoi vedere, l'intestazione Set-Cookie contiene una coppia di valori nome, una data GMT, un percorso e un dominio. Il nome e il valore saranno codificati in URL. Il campo expires è un'istruzione al browser per "dimenticare" il cookie dopo l'ora e la data specificate.

Se il browser è configurato per memorizzare i cookie, manterrà queste informazioni fino alla data di scadenza. Se l'utente punta il browser su una pagina che corrisponde al percorso e al dominio del cookie, invierà nuovamente il cookie al server. Le intestazioni del browser potrebbero essere simili a questa:

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

Uno script PHP avrà quindi accesso al cookie nelle variabili ambientali $ _COOKIE o $ HTTP_COOKIE_VARS [] che contiene tutti i nomi e i valori dei cookie. È possibile accedere al cookie sopra utilizzando $ HTTP_COOKIE_VARS ["nome"].

Impostazione dei cookie con PHP

PHP fornito setcookie()funzione per impostare un cookie. Questa funzione richiede fino a sei argomenti e dovrebbe essere chiamata prima del tag <html>. Per ogni cookie questa funzione deve essere chiamata separatamente.

setcookie(name, value, expire, path, domain, security);

Ecco il dettaglio di tutti gli argomenti:

  • Name- Questo imposta il nome del cookie ed è memorizzato in una variabile d'ambiente chiamata HTTP_COOKIE_VARS. Questa variabile viene utilizzata durante l'accesso ai cookie.

  • Value - Imposta il valore della variabile denominata ed è il contenuto che desideri effettivamente memorizzare.

  • Expiry- Specifica un tempo futuro in secondi dalle 00:00:00 GMT del 1 ° gennaio 1970. Dopo questo tempo il cookie diventerà inaccessibile. Se questo parametro non è impostato, il cookie scadrà automaticamente alla chiusura del browser web.

  • Path- Questo specifica le directory per le quali il cookie è valido. Un singolo carattere barra consente al cookie di essere valido per tutte le directory.

  • Domain- Può essere utilizzato per specificare il nome di dominio in domini molto grandi e deve contenere almeno due punti per essere valido. Tutti i cookie sono validi solo per l'host e il dominio che li ha creati.

  • Security - Può essere impostato su 1 per specificare che il cookie deve essere inviato solo tramite trasmissione sicura utilizzando HTTPS, altrimenti impostato su 0, il che significa che il cookie può essere inviato tramite HTTP normale.

L'esempio seguente creerà due cookie name e age questi cookie scadranno dopo un'ora.

<?php
   setcookie("name", "John Watkin", time()+3600, "/","", 0);
   setcookie("age", "36", time()+3600, "/", "",  0);
?>
<html>
   
   <head>
      <title>Setting Cookies with PHP</title>
   </head>
   
   <body>
      <?php echo "Set Cookies"?>
   </body>
   
</html>

Accesso ai cookie con PHP

PHP offre molti modi per accedere ai cookie. Il modo più semplice è utilizzare le variabili $ _COOKIE o $ HTTP_COOKIE_VARS. L'esempio seguente accederà a tutti i cookie impostati nell'esempio precedente.

<html>
   
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   
   <body>
      
      <?php
         echo $_COOKIE["name"]. "<br />";
         
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["name"]. "<br />";
         
         echo $_COOKIE["age"] . "<br />";
         
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["age"] . "<br />";
      ?>
      
   </body>
</html>

Puoi usare isset() funzione per verificare se un cookie è impostato o meno.

<html>
   
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   
   <body>
      
      <?php
         if( isset($_COOKIE["name"]))
            echo "Welcome " . $_COOKIE["name"] . "<br />";
         
         else
            echo "Sorry... Not recognized" . "<br />";
      ?>
      
   </body>
</html>

Eliminazione dei cookie con PHP

Ufficialmente, per eliminare un cookie dovresti chiamare setcookie () solo con l'argomento name, ma questo non sempre funziona bene, tuttavia, e non dovrebbe essere invocato.

È più sicuro impostare il cookie con una data che è già scaduta -

<?php
   setcookie( "name", "", time()- 60, "/","", 0);
   setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
   
   <head>
      <title>Deleting Cookies with PHP</title>
   </head>
   
   <body>
      <?php echo "Deleted Cookies" ?>
   </body>
   
</html>