2011-08-29 14 views
11

Sto iniziando a sviluppare un carrello multi store in php dove ogni utente avrà un carrello della spesa in diversi negozi. Vorrei sapere qual è il modo migliore per salvare i dettagli del carrello acquisti come nome prodotto, ID, prezzo ecc., Quando un utente fa clic su "Aggiungi al carrello". Penso che possiamo salvarlo in due modi: a) Sessione b) Tabella Db.Carrello spesa, sessione o DB?

Qual è il metodo migliore per salvare tutte queste informazioni? Voglio renderlo il più sicuro possibile.

Si prega di suggerire.

Grazie

risposta

7

È necessario conoscere la criticità dei dati. Se si ritiene che i dati nel carrello acquisti non siano critici e non siano necessari per più sessioni, è sufficiente eseguirlo con le sessioni e salvare alcune scritture nel DB.

Anche se è necessario un DB, è possibile salvare alcune scritture e utilizzare il lato client per l'archiviazione temporanea e infine spostarlo nel DB con una sorta di meccanismo di sincronizzazione.

Ma se i tuoi dati sono molto critici ed è obbligatorio che persistano in più sessioni, DB sarebbe la scelta ideale in quanto ti darebbe più potere sull'accesso ai dati e faciliterà anche l'implementazione.

+0

In caso di utilizzo di una sessione per i visitatori shoppingcart, si desidera il meno possibile memorizzato in esso. 1 perché i dati della sessione vengono passati alla pagina successiva (aumento del tempo di caricamento), 2 perché i dati critici come il prezzo non devono essere "memorizzati nella cache" in una sessione poiché le sessioni potrebbero esistere per un periodo di tempo più lungo. (ci sono casi in cui si desidera "archiviarlo", ma l'idea è corretta? :) – Frankey

+0

@Frankey Le variabili di sessione PHP non vengono inviate al client. Il cookie ID sessione viene utilizzato per indicare al server a quale sessione verrà associato '$ _SESSION' con. –

0

con un'implementazione del database si ha un controllo granulare e una migliore persistenza.

Utilizzare Session per conoscere l'utente connesso tra le pagine, ma DataBase per memorizzare i dati critici.

7

Sessione o DB non è una scelta esclusiva - la sessione può essere archiviata anche nel database. In qualche modo devi recuperare il carrello per l'utente. In tutti i casi avrai una sessione per questo. La domanda è se il carrello debba essere mantenuto tra le sessioni (per gli utenti registrati). In tal caso non si dovrebbe accoppiare il carrello con la sessione. Le cose si complicano se si desidera salvare il carrello per gli utenti registrati, consentire l'accesso non registrato al carrello e unire il carrello della sessione e il carrello salvato nel caso in cui l'utente acceda.

Quindi, per rispondere alla domanda, è necessario chiarire le proprie esigenze. Che cosa significa "carrello della spesa in diversi negozi"? Il carrello verrà salvato tra gli accessi (ad esempio l'utente ritorna dopo 1 settimana)?

Per quanto riguarda la sicurezza, in genere è preferibile salvare la sessione nel database, in quanto è possibile disporre di protezione aggiuntiva che ha accesso ai dati, in particolare su un hosting condiviso.

Problemi correlati