Javascript: parliamo di cookies |
Quando navighi nel Web, stai usando il protocollo HTTP (HyperText Transfer Protocol); questo e' il linguaggio con il quale il tuo browser (client) e l' host (il server) scambiano informazioni. In breve, il tuo client chiede qualcosa al server e lui risponde al client (di solito ritornando una pagina web). Poi la connessione viene chiusa. Ma quando un browser legge la pagina, nota un sacco di cose: testo immagini, suoni e cosi' via. Bene, ogni volta che il browser trova un nuovo oggetto all' interno della pagina, (un' immagine per esempio) deve stabilire una nuova connessione con il server per scaricarlo. Questo significa che HTTP e' un protocollo stateless. Bene, visto che non c'e' modo per il server di ricordare qualcosa della precedente connessione, la societa' Netscape ha inventato un oggetto chiamato 'cookie'. Percio', cos'e' un cookie? Bene, un cookie e' un piccolo file '.txt' memorizzato nel tuo hard disk, dove sono scritte alcune informazioni. Cosi' puoi costruire delle pagine personalizzate tramite i cookies, ed inoltre puoi sapere quante volte un visitatore ha visitato la tua pagina. Wow! Ora possiamo vedere un esempio. Comunque ricorda: per vedere questo esempio devi abilitare Javascript nel tuo browser, e devi abilitare i cookies. Se sei preoccupato per la privacy, non ci sono problemi: questo e' solo un esempio, e puoi cancellare il file 'cookie.txt' memorizzato nel tuo hard disk successivamente. Viceversa, se hai gia' un cookie e non vuoi cancellarlo, devi solo salvarlo come 'cookie.bak'. Successivamente potrai cancellare il mio 'cookie.txt' e rinominare il tuo 'cookie.bak' in 'cookie.txt. Potresti anche cancellare il mio cookie semplicemente editando il file 'cookie.txt' e cancellando la riga contenente 'visitor'. Ok. vediamo: Clicca qui per memorizzare un cookie nel tuo hard disk Ora clicca qui per recuperare il cookie memorizzato E questa e' la pagina HTML<html><head><script language="JavaScript"><!-- Begin the script var username </script></head><body> Cosa significano queste istruzioni colorate?username = prompt('Per favore, digita il tuo nome (altrimenti premi cancel)',"Navigatore"); Prompt mostrera' una finestra che chiede un nome. Qui il visitatore digita il suo nome. Il valore di default e' 'Navigatore'. Se il visitatore digita un nome, diciamo 'Roberto', e preme il bottone OK, quel valore sara' impostato all' interno di una variabile chiamata 'username'. if (document.cookie.length > 0) Questo e' necessario per controllare se c'e' un cookie memorizzato. In questo caso la lunghezza di document.cookie sara' maggiore di 0. offset = document.cookie.indexOf(search); Tramite questa istruzione ottieni la posizione iniziale del cookie memorizzato (in questo caso il suo nome e' 'visitor'). Infatti, indexOf(qualcosa), restituisce la posizione dove e' registrato qualcosa. Questo e' un metodo utilizzabile con gli oggetti di tipo stringa. if (offset != -1) Con questa istruzione controlli se e' stato trovato un cookie di nome 'visitor' (in questo caso, 'search' e' una variabile che contiene 'visitor='). offset += search.length; Serve per ottenere la posizione del contenuto di 'visitor'. Infatti i cookie contengono 'name=', un valore, 'expires=', un valore. In questo caso il valore di 'visitor' e': 'Roberto'. return unescape(document.cookie.substring(offset, end))}} Return restituisce semplicemente un valore al chiamante della funzione. Unescape trasforma la codifica esadecimale nella corrispondente codifica ASCII. Substring(offset, end) restituisce la stringa trovata tra i valori offset e end. Ovviamente offset e end sono variabili. var todayDate = largeExpDate = new Date (); Qui stiamo definendo 2 oggetti di tipo 'Date ()'. Questi sono oggetti gia' definiti nel linguaggio Javascript. largeExpDate.setTime(todayDate.getTime() + 365 * 24 * 3600 * 1000); Qui ci sono 2 funzioni che fanno parte di Javascript: getTime() e setTime(). Queste funzioni sono disponibili per gli oggetti di tipo Date(). GetTime() restituisce l' ora in millesimi di secondo, setTime() imposta l' ora in millesimi di secondo. Percio' todayDate.getTime() restituisce l' ora dell' oggetto todayDate in millesimi di secondo. In altre parole ottieni la data corrente in millesimi di secondo (a partire dal 1/1/1970 alle ore 00:00:00). 365 * 24 * 3600 * 1000 calcola un anno in millesimi di secondo (1 anno e' composto da 365 giorni. 1 giorno e' composto da 24 ore. 1 ora e' composta da 3600 secondi, 1 secondo e' composto da 1000 millesimi di secondo). In breve ottieni la data del prossimo anno in millesimi di secondo. Cioe' questo cookie scadra' esattamente tra un anno. document.cookie = name+'='+escape(value)+'; expires=' + largeExpDate.toGMTString(); Bene, questo e' il formato di un cookie. LargeExpDate.toGMTString() trasforma largeExpDate (che e' in millesimi di secondo) in formato GMT (es. Mon, 31 Dec 1997 12:30:00 GMT). Escape(qualcosa) trasforma la codifica esadecimale di un carattere nella corrispondente codifica secondo il set di caratteri ISO latin-1. Devi usarla quando quando sono presenti caratteri come trattini, barre e cosi' via. Cosa fa questo scriptPrima di tutto ti chiede un nome (prompt). Poi imposta un cookie nel tuo hard disk (SetCookie). Poi cerca il valore del cookie di nome 'visitor' (per ottenere il nome - che gli hai dato tu - e che si trova memorizzato all' interno del cookie 'visitor'). Infine scrive un documento con i saluti. Bene, devo dirti una cosa: questo non e' un buon script. Infatti quando il browser web legge questa pagina, chiama l' interprete Javascript che legge le istruzioni e (se non ci sono errori) le esegue. In altre parole, quando legge questa istruzione: username = prompt('Per favore digita il tuo nome (altrimenti premi cancel)',"Navigatore"); l'interprete Javascript la esegue IMMEDIATAMENTE. Cosa voglio dire? beh, se scrivi istruzioni Javascript all' interno dei tag <head> , queste saranno eseguite non appena l' interprete Javascript le legge. Per evitare cio', devi DEFINIRE DELLE FUNZIONI. Infatti, quando l' interprete Javascript trova una definizione di funzione, sa che non la deve eseguire immediatamente. Eseguira' la funzione NON APPENA VIENE CHIAMATA. Puoi notare cio', osservando la barra di stato. Infatti nel modo scorretto (l' interprete Javascript esegue le istruzioni immediatamente) puoi vedere la barra di stato che indica che il documento non e' ancora stato scaricato. Viceversa, usando il modo corretto, la barra di stato ti dira': 'Document: Done'. Attenzione: questa pagina contiene uno script leggermente diverso. Infatti qui costruisco anche una piccola finestra. Comunque puoi senpre osservare il sorgente di questa pagina... Limiti
|
Home Pag. prec. Chi siamo? Scrivici!
Copyright (c) 1998-2006 Wowarea