Se tutto funziona passate all'Esercizio 1 sui cookies.
Vi ricordo che un cookie è una piccola quantità di
informazione (una stringa di testo) che viene scritta da un server web in un
browser (client) durante una connessione HTTP.
Tutte le volte che si apre un browser, il file contenente i cookies viene caricato
nella sua memoria cache. Ogni volta che dal browser parte una richiesta per una
pagina residente su un determinato server, se esistono uno o più cookies generati
in precedenza da quel server, questi verranno inviati al server come parte dell'header
della richiesta HTTP.
Ogni cookie, oltre al nome e al valore ha quattro attributi opzionali:
- expires, che specifica la validità (o durata) del cookie.
- path, che specifica l'indirizzo delle pagine web cui è associato il cookie.
In genere, un cookie è accessibile (leggibile e scrivibile) solo dalla pagina web
che lo ha creato e da tutte quelle pagine che sono nella stessa directory (o nelle sue
sotto-directory). Con l'attributo path si può specificare
quali altre pagine possono usare il cookie.
- domain, che si usa nel caso di siti di grosse dimensioni che si appoggiano su
più server. Specificando per esempio .netscape.com, i cookies saranno validi
per i domini www.netscape.com, devedge.netscape.com, channels.netscape.com.
Per motivi di sicurezza e privacy non è possibile specificare nell'attributo
domain valori di domini di primo livello (.net, .com, .it, ...).
Se non si specifica nessun valore per l'attributo domain, il server
è quello in cui risiede la pagina che ha creato il cookie.
- secure, che specifica se il cookie è trasmesso attraverso una connessione
sicura (secure=true) oppure no (secure=false).
Esercizi
- Generazione di un cookie in PHP
- Create una finta home page
(index.php) con un link ad una pagina di personalizzazione.
- Nella pagina di personalizzazione
scrivete un modulo simile a quello della figura.
- L'utente, dopo aver scelto uno schema di colore, deve selezionare il pulsante
Personalizza; così facendo si invoca un programma PHP che crea un cookie
per tenere traccia delle sue scelte.
Per semplicità codificate le preferenze nel valore del cookie
(in realtà si dovrebbero mettere le preferenze in un database e un codice nel cookie).
- Tornate all'home page, che questa volta dovrà avere
lo schema di colore appena scelto dall'utente.
- Generazione di un cookie in JavaScript
Di solito i cookies vengono generati mediante programmi residenti su server remoti ma è
possibile - anche se non molto frequente - usare JavaScript per la loro creazione
(sfruttando la proprietà cookie dell'oggetto document).
Esistono in rete delle funzioni che permettono di creare un cookie
(associandovi un nome, un valore, una data di scadenza, ...), di leggere il valore di un
cookie, di cancellare un cookie ...
Ad esempio, potete provare a capire e ad usare le funzioni seguenti per rifare l'Esercizio 1
completamente lato client.
*****************************************************************************
// cookies.js
// Derived from the Bill Dortch code at http://www.hidaho.com/cookies/cookie.txt
var today = new Date();
var expiry = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1) { endstr = document.cookie.length; }
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg) {
return getCookieVal (j);
}
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function DeleteCookie (name,path,domain) {
if (GetCookie(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}
function SetCookie (name,value,expires,path,domain,secure) {
document.cookie = name + "=" + escape (value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
*****************************************************************************
|