Cookies JavaScript

I cookie permettono di memorizzare informazioni dell'utente nelle pagine web.

Cos'è un cookie?

I cookie sono dati memorizzati in piccoli file di testo sul computer.

Dopo che il server web ha inviato una pagina al browser, la connessione viene chiusa e il server dimentica tutto dell'utente.

I cookie sono stati inventati per risolvere il problema di come ricordare le informazioni dell'utente:

  • Quando l'utente visita una pagina web, il suo nome può essere memorizzato nei cookie.
  • Quando l'utente visita la pagina successivamente, il cookie "ricorderà" il suo nome.

I cookie vengono salvati in coppie di nome-valore, come ad esempio:

username = Bill Gates

Quando il browser richiede una pagina al server, i cookie appartenenti a quella pagina vengono aggiunti alla richiesta. In questo modo il server ottiene i dati necessari per "ricordare" le informazioni dell'utente.

Se il browser ha disabilitato il supporto locale per i cookie, gli esempi seguenti non funzioneranno.

Creazione dei cookie tramite JavaScript

JavaScript può essere utilizzato document.cookie Creazione, lettura e cancellazione dei cookie delle proprietà.

Attraverso JavaScript, è possibile creare i cookie in questo modo:

document.cookie = "username=Bill Gates";

È possibile aggiungere anche una data valida (ora UTC). Di default, i cookie vengono cancellati quando il browser viene chiuso:

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC";

Attraverso path I parametri, ti permettono di dire al browser a quale percorso appartiene il cookie. Di default, il cookie appartiene alla pagina corrente.

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

Leggere un cookie tramite JavaScript

Puoi leggere un cookie in questo modo tramite JavaScript:

var x = document.cookie;

document.cookie Restituirà tutti i cookie in una stringa, ad esempio: cookie1=value; cookie2=value; cookie3=value;

Modificare un cookie tramite JavaScript

Puoi cambiarlo nello stesso modo in cui lo hai creato utilizzando JavaScript:

document.cookie = "username=Steve Jobs; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

Il vecchio cookie viene sovrascritto.

Eliminare un cookie tramite JavaScript

Eliminare un cookie è molto semplice.

Non è necessario specificare il valore del cookie quando si elimina un cookie:

Elimina direttamente expires Imposta i parametri su una data passata:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

Dovresti definire il percorso del cookie per assicurarti di eliminare il cookie corretto.

Alcuni browser non ti permetteranno di eliminare un cookie se non specifici il percorso.

Stringa Cookie

document.cookie L'attributo sembra una stringa di testo normale. Ma non lo è.

Anche se hai impostato document.cookie Scrivi una stringa cookie completa, quando la leggi di nuovo, vedrai solo il nome-valore.

Se viene impostato un nuovo cookie, l'antico cookie non verrà sovrascritto. Il nuovo Cookie verrà aggiunto a document.cookie, quindi se leggi document.cookie, ottieni qualcosa del genere:

cookie1 = value; cookie2 = value;
     

Se vuoi trovare il valore di un cookie specifico, devi scrivere una funzione JavaScript per cercare il valore del cookie nella stringa del cookie.

Esempio di JavaScript Cookie

Nell'esempio seguente, creeremo un cookie per memorizzare il nome dell'visitatore.

Quando un visitatore arriva per la prima volta sulla pagina web, gli viene richiesto di inserire il nome. Successivamente, questo nome viene memorizzato nel cookie.

Quando il visitatore torna alla stessa pagina, riceverà un messaggio di benvenuto.

Ad esempio, creeremo 3 funzioni JavaScript:

  1. Funzione per impostare il valore del cookie
  2. Funzione per ottenere il valore del cookie
  3. Funzione per controllare il valore del cookie

Funzione per impostare il cookie

Prima di tutto, creiamo una funzione per memorizzare il nome dell'visitatore in una variabile di cookie:

Esempio

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
} 

Spiegazione dell'esempio:

I parametri di questa funzione sono: il nome del cookie (cname), il valore del cookie (cvalue) e il numero di giorni conosciuti per la scadenza del cookie (exdays).

Aggiungendo il nome del cookie, il valore del cookie e la stringa di scadenza, la funzione imposta il cookie.

Funzione per ottenere il cookie

Poi, creiamo una funzione che restituisce il valore del cookie specificato:

Esempio

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
         }
         if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
         }
     }
    return "";
} 

Spiegazione della funzione:

Passa il cookie come parametro (cname).

Crea una variabile (name) e il testo da cercare (CNAME”=”).

Decodifica la stringa di cookie, gestisci i cookie con caratteri speciali, ad esempio “$”.

Dividere document.cookie con il punto e virgola in un array chiamato ca (decodedCookie.split(';')).

Eseguire un ciclo sulla matrice ca (i = 0; i < ca.length; i++) e leggere ogni valore c = ca[i].

Se viene trovato il cookie (c.indexOf(name) == 0), viene restituito il valore del cookie (c.substring(name.length, c.length)).

Se non viene trovato il cookie, viene restituito "".

Funzione di rilevamento cookie

Infine, creiamo una funzione per controllare se il cookie è impostato.

Se è stato impostato il cookie, viene visualizzato un saluto.

Se il cookie non è impostato, viene visualizzata una finestra di dialogo che chiede il nome dell'utente e memorizza il nome utente come cookie per 365 giorni chiamando setCookie Funzione:

Esempio

funzione checkCookie() {
    var username = getCookie("username");
    if (username != "") {
        alert("Welcome again " + username);
    }
        username = prompt("Please enter your name:", "");
        if (username != "" && username != null) {
            setCookie("username", username, 365);
        }
    }
} 

Ora combiniamoli

Esempio

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
         }
        if (c.indexOf(name)  == 0) {
            return c.substring(name.length, c.length);
         }
    }
    return "";
}
funzione checkCookie() {
    var user = getCookie("username");
    if (user != "") {
        alert("Benvenuto di nuovo " + user);
    }
        user = prompt("Inserisci il tuo nome:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }
}

Prova tu stesso

L'esempio sopra verrà eseguito dopo il caricamento della pagina checkCookie().