128 messaggi dal 01 febbraio 2006
Buongiorno a tutti,

nel mio sito di e-commerce ho realizzato il carrello affidandomi alla variabile Session (Session.SessionID), infatti i prodotti inseriti nel carrello si appoggiano a questa variabile e vengono poi sempre facilmente ripescati durante le fasi successive dell'acquisto, per poi essere archiviati.

La mia domanda è questa:

E' possibile che questa variabile si possa ripetere essendo utilizzata numerose volte nel corso del tempo da un gran numero di utenti ?

Oppure rimane sempre e comunque univoca per ogni accesso al mio sito.


Grazie mille...

Agostino Pasquin
28 messaggi dal 02 marzo 2006
non penso proprio , fa riferimento al browser dell' utente e non va ad "interagire" con gli altri utenti
128 messaggi dal 01 febbraio 2006
Ne deduco quindi che due utenti differenti possono avere la stessa SessionID.

Ciao e grazie

Agostino Pasquin
28 messaggi dal 02 marzo 2006
dieri di si , chiedo anche conferma ad altri
pasqua1981 ha scritto:
Ne deduco quindi che due utenti differenti possono avere la stessa SessionID.


No, due utenti non possono (non devono!) avere lo stesso sessionid; l'unico caso in cui due finestre hanno lo stesso sessionid è quando appartengono alla stessa istanza del browser (ad esempio se apri un collegamento in nuova finestra da IE: la due finestre condividono la sessione)

Matteo Casati
GURU4.net
128 messaggi dal 01 febbraio 2006
Quindi, scusa l'insistenza ma è molto importante, se svariati utenti sono collegati al mio sito da diverse parti d'italia, non potrà mai accadere che due o più di loro abbiano lo stesso Session ID.

Agostino Pasquin
pasqua1981 ha scritto:
se svariati utenti sono collegati al mio sito da diverse parti d'italia, non potrà mai accadere che due o più di loro abbiano lo stesso Session ID


Esatto: questo rischio non esiste (salvo eventuali falle nella sicurezza del web server)

In pratica il sistema funziona così (semplifico molto, non prenderlo come process diagram di iis, è puramente indicativo!): quando un utente apre una nuova sessione di navigazione il web server gli assegna un numero univoco (tipo GUID) e lo "associa" al client in forma di cookie non persistente (cookie di sessione). Ad ogni richiesta successiva il server riconosce il client tramite questo 'biscottino' e accede alle corrispondenti variabili di sessione.
I dati salvati in sessione sono "accessibili" solo dal client corripondente (nonostante siano nella memoria del server, comune a tutti gli utenti)
Puoi immaginare le variabili di sessione come un dictionary che a sua volta contiene per ogni chiave (la sessionID) un altro dictionary (i "nomi" delle variabili di sessione):

{memoria del server}
.|-- {Sessione["SessionID_1"]}
....|--- Session["Variabile_1"] = valore1
....|--- Session["Variabile_2"] = valore2
.|-- {Sessione["SessionID_2"]}
....|--- Session["Variabile_1"] = valore3
....|--- Session["Variabile_2"] = valore4

In pratica quando richiedi Session("MiaVariabile") dietro le quinte il server recuperi il lavoro attraversando la gerarchia in questo modo: TutteLeSessioni(CurrentUser.SessionID)("MiaVariabile")

Spero di averti un po' chiarito le idee e rassicurato sull'impossibilità che due utenti "si vedano" le rispettive sessioni (considera che la sessione è spesso usata per salvare i dati di login: se non fosse univoca avremmo la possibilità di far vedere a un utente i dati di qualcun altro...)

Matteo Casati
GURU4.net
128 messaggi dal 01 febbraio 2006
Ti ringrazio sei stato veramente gentile nell'articolare la risposta.

Mi sono levato un dubbio atroce perchè ero convinto che associando ai prodotti nel carrello alla variabile session, per poi recuperarli negli altri passaggi, mi sarei trovato di fronte una situazione che, tra un po' di tempo, per casualità, veniva pescata una variabile già usata e l'utente si trovava nel carrello i prodotti acquistati da un'altro precedentemente.

Invece ora stando alla tua precisa risposta, sto tranquillo che questo non avverrà mai.

Grazie mille

Agostino Pasquin

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.