Sessione PHP e cookie PHP con esempio

Cos'è Biscotto?

Un cookie è un piccolo file con una dimensione massima di 4KB che il server web memorizza sul computer client.

Una volta impostato un cookie, tutte le richieste di pagina che seguono restituiscono il nome e il valore del cookie.

Un cookie può essere letto solo dal dominio da cui è stato emesso. Ad esempio, un cookie impostato utilizzando il dominio www.guru99.com non può essere letto dal dominio carriera.guru99.com.

La maggior parte dei siti web su Internet visualizzano elementi di altri domini, come ad esempio la pubblicità. Anche i domini che servono questi elementi possono impostare i propri cookie. Questi sono noti come cookie di terze parti.

Un cookie creato da un utente può essere visibile solo a lui. Gli altri utenti non possono vederne il valore.

La maggior parte dei browser web dispone di opzioni per disabilitare i cookie, i cookie di terze parti o entrambi.

Se questo è il caso, PHP risponde passando il token del cookie nell'URL.

Il diagramma riportato di seguito illustra il funzionamento dei cookie.

Cos'è Biscotto

Qui,

1) Un utente richiede una pagina che memorizza i cookie

2) Il server imposta il cookie sul computer dell'utente

3) Altre richieste di pagina da parte dell'utente restituiranno il nome e il valore del cookie

Perché e quando utilizzare i cookie?

  • HTTP è un protocollo senza stato; i cookie ci consentono di tracciare lo stato dell'applicazione utilizzando piccoli file memorizzati sul computer dell'utente. Il percorso in cui vengono memorizzati i cookie dipende dal browser. Internet Explorer solitamente li memorizza nella cartella Temporal Internet Files.
  • Personalizzazione dell'esperienza utente: ciò si ottiene consentendo agli utenti di selezionare le proprie preferenze. Le pagine richieste che seguono sono personalizzate in base alle preferenze impostate nei cookie.
  • Tracciamento delle pagine visitate da un utente

Creazione di cookie

Diamo ora un'occhiata alla sintassi di base utilizzata per creare un cookie.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

QUI,

  • Php“setcookie” è il Funzione PHP utilizzato per creare il cookie.
  • "cookie_name" è il nome del cookie che il server utilizzerà quando recupererà il suo valore dalla variabile array $_COOKIE. È obbligatorio.
  • “cookie_value” è il valore del cookie ed è obbligatorio
  • "[expiry_time]" è facoltativo; può essere utilizzato per impostare il tempo di scadenza del cookie, ad esempio 1 ora. L'ora viene impostata utilizzando la funzione PHP time() più o meno un numero di secondi maggiore di 0, ovvero time() + 3600 per 1 ora.
  • “[cookie_path]” è facoltativo; può essere utilizzato per impostare il percorso del cookie sul server. La barra "/" significa che il cookie sarà reso disponibile sull'intero dominio. Le sottodirectory limitano l'accesso ai cookie al sottodominio.
  • “[dominio]” è facoltativo, può essere utilizzato per definire la gerarchia di accesso ai cookie, ad es www.cookiedomain.com significa intero dominio mentre www.sub.cookiedomain.com limita l'accesso ai cookie www.sub.cookiedomain.com e i suoi sottodomini. Tieni presente che è possibile avere un sottodominio di un sottodominio purché il totale dei caratteri non superi i 253 caratteri.
  • "[secure]" è facoltativo, l'impostazione predefinita è false. Viene utilizzato per determinare se il cookie viene inviato tramite https se è impostato su true o http se è impostato su false.
  • "[Httponly]" è facoltativo. Se è impostato su true, solo i linguaggi di scripting lato client, ad es JavaCopione non possono accedervi.

Nota: la funzione php set cookie deve essere eseguita prima del tag di apertura HTML.

Consideriamo ora un esempio che utilizza i cookie.

Creeremo un programma base che ci permetterà di memorizzare il nome utente in un cookie che scade dopo dieci secondi.

Il codice seguente mostra l'implementazione dell'esempio precedente “cookies.php”.

<?php
     setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
     echo 'the cookie has been set for 60 seconds';
?>

Produzione:

the cookie has been set for 60 seconds

Recupero del valore del cookie

Crea un altro file denominato “cookies_read.php” con il seguente codice.

<?php
     print_r($_COOKIE);    //output the contents of the cookie array variable 
?>

Produzione:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Nota: $_COOKIE è una variabile super globale incorporata in PHP.

Contiene i nomi e i valori di tutti i cookie impostati.

Il numero di valori che il

L'array $_COOKIE può contenere dipende dalla dimensione della memoria impostata in php.ini.

Il valore predefinito è 1 GB.

Testare la nostra applicazione.

Supponiamo che tu abbia salvato i tuoi file PHP nella cartella phptus.

  • Passaggio 1: apri il browser web e inserisci l'URL http://localhost/phptuts/cookies_read.php

Recupero del valore del cookie

Nota: è stato visualizzato solo un array vuoto

  • Passaggio 2: browser all'URL http://localhost/phptuts/cookies.php

Recupero del valore del cookie

  • Passaggio 3: torna alla prima scheda, quindi fai clic sul pulsante Aggiorna

Recupero del valore del cookie

Attendi un minuto, quindi fai nuovamente clic sul pulsante Aggiorna. Che risultati hai ottenuto?

Elimina cookie

  • Se desideri distruggere un cookie prima della sua scadenza, imposta la scadenza su un tempo già trascorso.
  • Crea un nuovo file denominato cookie_destroy.php con il seguente codice
<?php

 setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Ripeti i passaggi da 1 a 3 della sezione precedente sul recupero dei valori dei cookie.
  • Apri l'URL http://localhost/phptuts/cookie_destroy.php
  • Passa all'URL http://localhost/phptuts/cookies_read.php che risultati mostra?

Cos'è una sessione?

  • Una sessione è una variabile globale memorizzata sul server.
  • A ogni sessione viene assegnato un ID univoco che viene utilizzato per recuperare i valori memorizzati.
  • Ogni volta che viene creata una sessione, un cookie contenente l'ID di sessione univoco viene memorizzato sul computer dell'utente e restituito con ogni richiesta al server. Se il browser client non supporta i cookie, l'ID univoco della sessione php viene visualizzato nell'URL
  • Le sessioni hanno la capacità di memorizzare dati relativamente grandi rispetto ai cookie.
  • I valori della sessione vengono automaticamente cancellati alla chiusura del browser. Se si desidera memorizzare i valori in modo permanente, è necessario memorizzarli nel database.
  • Proprio come la variabile di array $_COOKIE, le variabili di sessione vengono archiviate nella variabile di array $_SESSION. Proprio come i cookie, la sessione deve essere avviata prima di qualsiasi tag HTML.

Perché e quando utilizzare le Sessioni?

  • Si desidera archiviare informazioni importanti come l'ID utente in modo più sicuro sul server in cui gli utenti malintenzionati non possano modificarle.
  • Vuoi passare valori da una pagina all'altra.
  • Desideri l'alternativa ai cookie sui browser che non supportano i cookie.
  • Desideri archiviare le variabili globali in modo efficiente e più sicuro rispetto al loro passaggio nell'URL
  • Stai sviluppando un'applicazione come un carrello degli acquisti che deve archiviare temporaneamente informazioni con una capacità superiore a 4 KB.

Creazione di una sessione

Per creare una sessione, devi prima chiamare la funzione PHP session_start e quindi memorizzare i tuoi valori nella variabile array $_SESSION.

Supponiamo di voler conoscere il numero di volte in cui una pagina è stata caricata, per farlo possiamo utilizzare una sessione.

Il codice seguente mostra come creare e recuperare valori dalle sessioni

<?php

session_start(); //start the PHP_session function 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
 echo 'You are visitor number ' . $_SESSION['page_count'];

?>

Produzione:

You are visitor number 1

Distruzione delle variabili di sessione

La funzione session_destroy() viene utilizzata per distruggere l'intera variabile della sessione Php.

Se vuoi distruggere solo un singolo elemento della sessione, usa la funzione unset().

Il codice seguente illustra come utilizzare entrambi i metodi.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

unset($_SESSION['product']); //destroy product session item 

?>

Session_destroy rimuove tutti i dati della sessione inclusi i cookie associati alla sessione.

Unset libera solo le variabili della sessione individuale.

Gli altri dati rimangono intatti.

Sintesi

  • I cookie sono piccoli file salvati sul computer dell'utente
  • I cookie possono essere letti solo dal dominio emittente
  • I cookie possono avere una scadenza, se non viene impostata, il cookie scade quando il browser viene chiuso
  • Le sessioni sono come variabili globali archiviate sul server
  • A ogni sessione viene assegnato un ID identificativo univoco utilizzato per tenere traccia delle variabili per un utente.
  • Sia i cookie che le sessioni devono essere avviati prima che eventuali tag HTML vengano inviati al browser.