Dove sono archiviate le variabili $ _SESSION?


158

Le $_SESSIONvariabili sono memorizzate sul client o sul server?


sul server in cui si esegue l'applicazione php, per il percorso specifico è necessario verificare con phpinfo ()
densitàx

Risposte:


168

La posizione della $_SESSIONmemoria variabile è determinata dalla session.save_pathconfigurazione di PHP . Di solito questo è /tmpsu un sistema Linux / Unix. Utilizza la phpinfo()funzione per visualizzare le tue impostazioni particolari se non sicuro al 100% creando un file con questo contenuto nel DocumentRoottuo dominio:

<?php
    phpinfo();
?>

Ecco il link alla documentazione di PHP su questa impostazione di configurazione:

http://php.net/manual/en/session.configuration.php#ini.session.save-path


129

Come già accennato, i contenuti sono memorizzati sul server. Tuttavia, la sessione viene identificata da un ID sessione, che viene archiviato nel client e inviato con ogni richiesta. Di solito l'ID sessione è memorizzato in un cookie, ma può anche essere aggiunto agli URL. (Questo è il PHPSESSIDparametro di query che alcune volte vedi)


41
+1 perché hai implicato che i cookie non memorizzano il contenuto di $ _SESSION (questi contenuti sono memorizzati sul server, quindi non sono vulnerabili alle modifiche da parte del client)
shufler

12
Risposta eccellente! Stavo cercando la domanda: "Perché le sessioni scadono dopo aver eliminato la cache del browser?". E mi hai salvato la giornata.
Allievo il

2
il server crea il file sess_7nu9p0fvidvva6ouaugqcc8292 e su avviso browser (getCookie ('PHPSESSID')); // 7nu9p0fvidvva6ouaugqcc8292
zloctb

2
Plus1 - Per rispondere alla domanda: "... memorizzato sul client o sul server?"
Alex Vargas,

22

Sono generalmente memorizzati sul server. Dove vengono archiviati dipende da te come sviluppatore. È possibile utilizzare la session.save_handlervariabile di configurazione e il session_set_save_handlerper controllare come le sessioni vengono salvate sul server. Il metodo di salvataggio predefinito è di salvare sessioni in file. Il punto in cui vengono salvati è controllato dalla session.save_pathvariabile.


18

Un'aggiunta: Va notato che, nel caso "/ tmp" sia la directory in cui sono memorizzati i dati della sessione (che sembra essere il valore predefinito), le sessioni non persisteranno dopo il riavvio di quel server Web, come "/ tmp "viene spesso eliminato durante il riavvio. Il concetto di persistenza dal punto di vista del client rimane e cade con la persistenza della memoria sul server - che potrebbe fallire se la directory "/ tmp" viene utilizzata per i dati della sessione.


13

Su Debian (non è questo il caso della maggior parte delle distro Linux?), È salvato in / var / lib / php5 /. Come accennato in precedenza, è configurato nel tuo php.ini.


12

Sto usando Ubuntu e le mie sessioni sono memorizzate in / var / lib / php5.


1
Grazie, è tutto ciò che volevo. Sì, se non fossero nel solito posto, avrò bisogno di aprire gli INI, ma volevo solo sapere "Ehi, dove sono solitamente archiviate le sessioni ?" / var / lib / php / sessioni / lo è.
Eric L.,

7

Come ha sottolineato il signor Taylor, questo è di solito impostato in php.ini. Di solito sono memorizzati come file in una directory specifica.



0

Come funziona? Come fa a sapere che sono io?

La maggior parte delle sessioni imposta una chiave utente (chiamata sessionid) sul computer dell'utente che assomiglia a questo: 765487cf34ert8dede5a562e4f3a7e12. Quindi, quando una sessione viene aperta su un'altra pagina, esegue la scansione del computer alla ricerca di una chiave utente e viene eseguita sul server per ottenere le variabili.

Se si cancella erroneamente la cache, anche la chiave utente verrà cancellata. Non sarai più in grado di ottenere le tue variabili dal server poiché non conosci il tuo ID.


0

Nella mia macchina Ubuntu le sessioni sono archiviate in

/var/lib/php/sessions

e devi sudo lssolo in questa directory lslanciare

ls: impossibile aprire la directory '.': autorizzazione negata

E sul mio server Windows Wamp sono archiviate le sessioni php

C:\wamp64\tmp

e se installi php standalone su Windows, allora non c'è alcun valore impostato di default

session.save_path => no value => no value

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.