Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni

1,245 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,245
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni

  1. 1. Corso di Basi di Dati e Laboratorio PHP – cookie e sessioni Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 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 2 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 A.A. 2005/2006 Basi di Dati e Laboratorio 3 1
  2. 2. Cookie – 2 Client Web HTTP request (browser) Server HTTP response + cookie Prima richiesta Successive richieste Client HTTP request Web (browser) + Server cookie A.A. 2005/2006 Basi di Dati e Laboratorio 4 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 5 Cookie – 4 • Per settare un cookie – funzione setcookie bool 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 A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  3. 3. 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 7 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 8 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 A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  4. 4. Sessioni – 2 Client Web HTTP request (browser) Server SID SID HTTP response SID + SID Prima richiesta Successive richieste Client HTTP request Web (browser) SID + Server SID SID SID A.A. 2005/2006 Basi di Dati e Laboratorio 10 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 11 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 (-) A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  5. 5. Sessioni – 5 • Come passare l’ID di sessione in GET? – La costante SID puo’ essere usata per comporre le url echo '<a href=”main.php?'.SID.'quot;>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 13 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 14 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 A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  6. 6. 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 16 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’]); A.A. 2005/2006 Basi di Dati e Laboratorio 17 6

×