Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Click here to load reader
-
Upload
guestbe916c -
Category
Technology
-
view
1.054 -
download
1
Transcript of Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
1
A.A. 2005/2006 Basi di Dati e Laboratorio 1
Corso di Basi di Dati e Laboratorio
PHP – cookie e sessioniAlfio Ferrara - Stefano Montanelli
A.A. 2005/2006 Basi di Dati e Laboratorio 2
La persistenza dei dati
• La natura stateless del Web richiede l’impiego di tecniche capaci di simulare la persistenza delle informazioni durante successive richieste tra client (browser) e Web server
• Approcci possibili– Cookie– Sessioni
• Le informazioni relative a cookie e sessioni vengono memorizzate nella cache del browser– Sono condivise da tutte le istanze del programma
avviate con il medesimo profilo utente
A.A. 2005/2006 Basi di Dati e Laboratorio 3
Cookie – 1
• Previsti dal protocollo HTTP• Sistema per immagazzinare dati lato client• Il browser, ad ogni richiesta, invia al server
i dati immagazzinati nei cookie all’interno dell’header HTTP
2
A.A. 2005/2006 Basi di Dati e Laboratorio 4
Cookie – 2
Client(browser)
Web ServerHTTP request
Client(browser)
Web Server
Prima richiestaSuccessive richieste
HTTP request+
cookie
HTTP response+
cookie
A.A. 2005/2006 Basi di Dati e Laboratorio 5
Cookie – 3
• PHP prevede funzioni per– inviare dati al client sotto forma di cookie– interrogare i dati inviati al server nell’header
HTTP
A.A. 2005/2006 Basi di Dati e Laboratorio 6
Cookie – 4
• Per settare un cookie– funzione setcookiebool setcookie ( string name [, string value[, int expire [, string path [, string domain[, int secure]]]]])
• Dato che i cookie vengono inviati con l’header HTTP, la funzione deve essere chiamata prima di aver effettuato un qualsiasi output
3
A.A. 2005/2006 Basi di Dati e Laboratorio 7
Cookie – 5
• Quando il valore di ritorno di setcookie ètrue non significa che il client abbia accettato il cookie ma solo che la sua trasmissione è stata effettata con successo
• I cookie diventano visibili dalla pagina successiva a quella in cui sono stati settati
• Sono recuperabili nella variabile superglobale $_COOKIE
• Devono essere cancellati con gli stessi parametri con i quali sono stati settati (con valore uguale alla stringa vuota “”)
A.A. 2005/2006 Basi di Dati e Laboratorio 8
Cookie – 6
• Si possono settare anche cookie con valori multipli facendo seguire un ‘[]’ al loro nome
• Con la stessa tecnica si possono inviare cookie che simulino il comportamento degli array associativi del PHP (e che come tali saranno disponibili all’interno di $_COOKIE)
• Il client memorizzerà comunque una serie di cookie separati
A.A. 2005/2006 Basi di Dati e Laboratorio 9
Sessioni – 1
• Le sessioni vengono utilizzate per memorizzare dati lato server
• Ad una sessione viene associato un identificatore (SID – session identifier) che viene trasmesso da una pagina all’altra– utilizzando i cookie– specificandolo come parametro GET
4
A.A. 2005/2006 Basi di Dati e Laboratorio 10
Sessioni – 2
Client(browser)
Web ServerHTTP request
Client(browser)
Web Server
Prima richiestaSuccessive richieste
SIDHTTP response
+SIDSID
SID
HTTP request+
SIDSID
SID SID
A.A. 2005/2006 Basi di Dati e Laboratorio 11
Sessioni – 3
• Nel php.ini è possibile stabilire se utilizzare i cookie per trasmettere l’ID di sessione da una pagina all’altra (direttiva session.use_cookies)
• Altri parametri di configurazione delle sessioni riguardano– timeout – Dominio di validità– metodo di seralizzazione per i dati di sessione
(es. WDDX)
A.A. 2005/2006 Basi di Dati e Laboratorio 12
Sessioni – 4
• Uso del parametro GET per passare l’ID di sessione– Utile se il client non accetta cookies (+)– Le url contengono l’ID di sessione. Non
ottimale per i bookmark o per i motori di ricerca (-)
– Le informazioni sull’ID di sessione rimangono nei log del web server e degli eventuali proxy, anche in presenza di connessione protetta (-)
5
A.A. 2005/2006 Basi di Dati e Laboratorio 13
Sessioni – 5
• Come passare l’ID di sessione in GET?– La costante SID puo’ essere usata per
comporre le urlecho
'<a href=”main.php?'.SID.'">click here</a>';
– Se la direttiva session.use_trans_sid èabilitata, il PHP provvede ad aggiungere automaticamente l’ID di sessione alle url per i tag specificati nella direttiva url_rewriter.tags
A.A. 2005/2006 Basi di Dati e Laboratorio 14
Sessioni – 6
• Uso dei cookie per le sessioni– Nel momento in cui si inizia una sessione
viene inviato un cookie contente il nome e l’ID della sessione
– Il client, ad ogni richiesta, invia il cookie al server nell’header HTTP
– In presenza di un client che supporta (e accetta) i cookie è la soluzione preferibile
A.A. 2005/2006 Basi di Dati e Laboratorio 15
Sessioni – 7
• Per iniziare una sessione occorre utilizzare la funzione session_start() che crea una nuova sessione o recupera i dati disponibili da una sessione esistente il cui ID sia arrivato al server attraverso GET, POST o cookie
6
A.A. 2005/2006 Basi di Dati e Laboratorio 16
Sessioni – 8
• Se si utilizzano i cookie per le sessioni, occorre chiamare la funzione session_start() prima di aver prodotto un qualsiasi output
• E’ possibile evitare l’uso della funzione session_start() mediante il parametro di configurazione session.auto_start
A.A. 2005/2006 Basi di Dati e Laboratorio 17
Sessioni – 9
• I dati memorizzati in sessione sono disponibili nell’array superglobal $_SESSION
• Manipolare l’array $_SESSION per creare e cancellare variabili di sessione
$_SESSION[‘creditCardId’]=23346543321412;unset($_SESSION[‘creditCardId’]);