Domanda

Non ho mai voluto consentire a un utente di rimanere connesso per un certo periodo di tempo, quindi non ho mai visto l'uso di a "Ricordati di me" caratteristica.Però ho cominciato a pensare a come si fa e vorrei qualche chiarimento.

Attualmente sto memorizzando le mie sessioni in un database.Ciò che mi ha sempre lasciato perplesso è stato il modo in cui, anche se non imposto esplicitamente un cookie, ne viene inserito uno nel mio browser.Sono un po' confuso perché una sessione è una sessione e un cookie è un cookie.Non vedo come una sessione imposta un cookie.

Vorrei anche sapere se, impostare semplicemente un'altra variabile di sessione nell'array di sessione per mantenere l'utente connesso, sarebbe sufficiente o avrei comunque bisogno di impostare un cookie?

È stato utile?

Soluzione

  

Ciò che ha sempre perplesso me è stato come, anche se non imposto in modo esplicito un cookie, si è messo nel mio browser.

Un gestore di sessione deve identificare quale sessione appartiene a quale utente.

La maggior parte delle librerie di sessione farlo impostando un cookie.

  

(IS) impostando un'altra variabile di sessione nella matrice sessione per mantenere l'utente loggato sarebbe sufficiente o avrei ancora bisogno di impostare un cookie?

La maggior parte delle librerie per la sessione del cookies di sessione . Questi sono i biscotti senza tempo di scadenza specificata. Essi scadono quando il browser si chiude e non sono sufficienti per implementare un "Ricordati di Me" caratteristica (che si prevede a persistere i riavvii del browser, quindi deve avere un tempo di scadenza esplicita).

Altri suggerimenti

Al fine di estrarre i dati di sessione di nuovo dal database è necessario un tasto. Questo è chiamato l'ID di sessione.

L'ID di sessione deve essere memorizzato da qualche parte. Sia come parte della stringa URL che i posti posteriori client o, più comunemente, in un cookie sul client. Quando la richiesta viene inviato, sessione di legge il valore dal cookie e sa che registrano a tirare indietro dalla memorizzazione delle sessioni.

Questo avviene automaticamente.

L'unica ragione per usare la sessione è se i dati che si desidera conservare è maggiore di 4 KB (limitazioni del browser); o se il tempo necessario per estrarre i dati dal server è maggiore di leggerlo dalla memorizzazione delle sessioni.

Se la quantità di dati si memorizzano è inferiore a 4 KB Consiglio vivamente appena impostato che nel cookie per cominciare. Io generalmente memorizzare le cose, come l'ID utente, l'utente nome, e un paio di altri attributi. Tenete a mente che è banale per ispezionare un valore cookie, quindi queste informazioni devono essere criptati prima di andare al cliente.

Un'altra cosa è se il tempo di query per estrarre i dati necessari dalla fonte originale è piccolo, quindi scegliere di farlo, invece di metterla in sessione. In questo modo si ottiene solo quando è effettivamente necessario è invece che con ogni carico singola pagina.

Spiegazione della relazione tra cookie e sessione:

PHP utilizza i cookie per identificare in modo univoco la sessione per ciascun utente.Questo è l'unico modo più affidabile perché il cookie viene inviato ogni volta che richiedi un file dal server.Utilizzando il token nel cookie, che è anche l'identificatore di sessione, PHP cercherà la directory tmp per vedere se la sessione esiste.Se la sessione esiste, le variabili vengono caricate dal file corretto e sarai in grado di accedere alle variabili su quella sessione.

Pertanto, i cookie memorizzano l'identificatore di sessione necessario per identificare quale utente utilizza quale sessione.Questo è anche il modo in cui avviene il dirottamento della sessione, quando le persone possono modificare il cookie identificativo della sessione per utilizzare l'identificatore di sessione di un'altra persona.

L'implementazione sessione di PHP sottostante imposta il cookie. È possibile modificare questo e hanno il valore di ID di sessione passato nella stringa di query, ma io non lo consiglio. Non si utilizza il cookie, PHP fa. Si fa riferimento al valore di sessione ID memorizzato nel cookie per eseguire le ricerche di dati di sessione.

  

Vorrei anche sapere, se semplicemente impostando un'altra variabile di sessione nella matrice sessione per mantenere l'utente loggato sarebbe sufficiente o avrei ancora bisogno di impostare un cookie?

Non appena l'utente chiude il browser, la sessione viene ucciso e il cookie viene cancellato. Non credo che alcun meccanismo esce a persistere il valore di sessione, e per buoni motivi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top