io di solito per realizzare queste cose partivo da zero [solo la prima volta, poi uso le stesse funzioni ]

Il metodo che uso è quello di salvare in un database una sessione per ogni utente, sessione che distruggo nel momento in cui l'ordine viene concluso o l'utente si "slogga". Idem i dati nel database, vengono eliminati nello stesso momento in cui la sessione termina di esistere.
Non so a priori se sia la soluzione migliore.

Penso sia meglio sentire anche qualcuno più esperto di me. Buon lavoro!