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

6

Click here to load reader

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

Page 1: 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

Page 2: Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni

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

Page 3: Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni

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

Page 4: Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni

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 (-)

Page 5: Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni

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

Page 6: Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni

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’]);