Puoi usare i cookies o le sesisoni a te la scelta.
Solitamente si usano anche entrabe le cose dipende dal livello di sicurezza che necessitano i tuoi dati.

Cmq puoi salvare nel cookie i codice cliccati e quindi quando l'utente preme "vai alla cassa" riproporre tutto, cosi' il carrello puo' rimanere salvato sul pc di chi naviga .... se non richiedi login.
Ma se richiedi login in prtimis allora nn sbatterti salva tutto in database .

Fati la tabella carrello che e' una tabella di relazione utente-prodotti

table carrello

id_utente
id_prodotto
quantità
data_crezione

primary key(id_utente,id_prodotto)

foreign key(id_prodotto) on delete cascade
foreign key(id_utente) on delete cascade



Nel caso puoi impostare anche qualche triggero o altra chiave per avere un controllo migliore ma in soldoni .... puoi fare cosi' se richiedi login.

Potresti anche fare un cosa bella, ossia un sistema ibrido che lavora a cookie epr l'utenza free, e database per l'utenza registrata. E quando l'utente free va a apagare richiedi la registrazione, completata la quale trascrivi il carrello dal cookie al database e pulisci il cookie quindi lo mandi a pagare

Gud lac