Le $_SESSIONvariabili sono memorizzate sul client o sul server?
Le $_SESSIONvariabili sono memorizzate sul client o sul server?
Risposte:
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
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)
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.
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.
Sto usando Ubuntu e le mie sessioni sono memorizzate in / var / lib / php5.
Come ha sottolineato il signor Taylor, questo è di solito impostato in php.ini. Di solito sono memorizzati come file in una directory specifica.
Per Ubuntu 16.10 sono le sessioni salvate in / var / lib / php / session / ...
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.
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
Molte delle risposte sopra sono opache. A mio avviso, l'autore di questa domanda vuole semplicemente sapere dove sono memorizzate le variabili di sessione per impostazione predefinita. Secondo questo: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions sono semplicemente memorizzati sul server per impostazione predefinita . Speriamo che altri trovino questo contributo significativo.