Quando Magento utilizza le sessioni e quando i cookie?


9

So che Magento ha le seguenti funzioni principali per la gestione di sessioni e cookie:

Mage::getSingleton('core/cookie');
Mage::getSingleton('core/session');

Quando Magento imposta i cookie e quando le sessioni di PHP? Quali sono i casi d'uso?

Sono un po 'confuso, perché so che Magento memorizza le informazioni del carrello Mage::getSingleton('checkout/session')e lo stato dell'utente Mage::getSingleton('customer/session'). Ma la sessione di checkout non sembra essere una sessione, ma un cookie. Perché quando chiudo il browser e riapro la pagina gli articoli sono ancora nel carrello.

Ciò significa che il checkout/sessionmodello imposta i cookie e non la $_SESSIONvariabile globale ?

Risposte:


14

No, ciò significa che le sessioni sono persistenti con un cookie, che contiene l'ID della sessione. L'unica alternativa in PHP è un parametro URL come ?SID=d41d8cd98f00b204e9800998ecf8427edove d41d8cd98f00b204e9800998ecf8427eè l'ID di sessione.

In breve, i dati della sessione sono memorizzati sul server ma poiché HTTP è senza stato, è necessario un cookie o un parametro con l' id di sessione per identificare la sessione corretta.

Magento imposta due cookie di sessione, adminhtmlper il backend e frontendper il frontend. I modelli di sessione come 'checkout/session'archiviano i loro dati in uno "spazio dei nomi", ad es $_SESSION['checkout'].

I cookie non correlati alla sessione impostati da Magento, ad esempio, sono i storecookie che si ricordano, che memorizzano la vista che stai navigando.


0

Mage::getSingleton('checkout/session')Salva tutti i dati selezionati nell'esempio delle Flatstabelle. sales_flat_quote sales_flat_quote_addresse altro ancora

Di cosa si tratta: ogni cliente alla sua prima visita riceve un carattere quote_idunico e un rapporto con i dati di altre quotetabelle ed è persistente per questo motivo puoi sempre vedere il tuo carrello. Questi dati ogni volta che cambi carrello, dati e qualcosa nel tuo modulo di pagamento prima di completare un ordine. Dopo aver completato l'ordine, tutti i dati del preventivo vengono recuperati e salvati nelle ordertabelle ep. sales_order_itemse i dati del tuo preventivo ottengono uno stato di disabilitazione. Questo succede ogni volta che fai e ordini.

Mage::getSingleton('customer/session') ha i dati dei tuoi clienti quando sei loggato.


Spero che questo abbia senso per te. Questo può essere più facile da spiegare parlando. Il modo in cui magento gestisce i suoi dati è complesso e molto ben distribuito, ma una volta capito come vengono gestiti i dati e come manipolarli. L'hai fatto torta Esasy magento.


AGGIORNARE

questo è il modo di arrivare quote_idper sessione

   $session        = Mage::getSingleton('checkout/session');
   $quote_id       = $session->getQuoteId();

Quindi questo viene quote_idsalvato in una sessione o cookie?
Rouzbeh,

in sessione. I cookie sono un meccanismo per l'archiviazione dei dati nel browser remoto e quindi il monitoraggio o l'identificazione degli utenti di ritorno.
Duarte

Questo è esattamente ciò che non capisco. La sessione scade quando chiudo il browser. Ma come fa Magento a ricordare ancora quote_ide quindi a carrello gli articoli quando si riapre il browser?
Rouzbeh,

La tua sessione memorizza il tuo IP e quando torni Magento lo usa per ottenere il tuo quote_ide Magic puoi vedere di nuovo il tuo carrello. L'utente registrato e non registrato ha un quote_idpreventivo I dati non scadono
Duarte

1
Ok, controlla questo. 1) Non registrato: hai aggiunto 3 prodotti al carrello, quindi i dati vengono salvati sales_flat_quotese rimuovi cookie e cache. I tuoi dati vengono persi e il tuo carrello sarà vuoto. Quindi gli utenti non registrati il ​​loro token si basa su cookie e cache. 2) Registrato: stessi 3 prodotti nel carrello e cancelli i cookie e la cache del browser. ottieni il logout ma quando accedi a 3 prodotti ancora lì. Tutta questa magia è gestita daquote
Duarte
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.