¿Se $_SESSIONalmacenan las variables en el cliente o el servidor?
¿Se $_SESSIONalmacenan las variables en el cliente o el servidor?
Respuestas:
La ubicación del $_SESSIONalmacenamiento variable está determinada por la session.save_pathconfiguración de PHP . Por lo general, esto está /tmpen un sistema Linux / Unix. Use la phpinfo()función para ver su configuración particular si no está 100% seguro al crear un archivo con este contenido en DocumentRootsu dominio:
<?php
phpinfo();
?>
Aquí está el enlace a la documentación de PHP en esta configuración:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
Como ya se mencionó, los contenidos se almacenan en el servidor. Sin embargo, la sesión se identifica mediante un id de sesión, que se almacena en el cliente y se envía con cada solicitud. Por lo general, el ID de sesión se almacena en una cookie, pero también se puede agregar a las URL. (Ese es el PHPSESSIDparámetro de consulta que algunas veces ves)
Generalmente se almacenan en el servidor. El lugar donde se almacenan depende de usted como desarrollador. Puede usar la session.save_handlervariable de configuración y la session_set_save_handlerpara controlar cómo se guardan las sesiones en el servidor. El método predeterminado para guardar es guardar sesiones en archivos. El lugar donde se guardan está controlado por la session.save_pathvariable.
Una adición: debe tenerse en cuenta que, en caso de que "/ tmp" sea el directorio donde se almacenan los datos de la sesión (que parece ser el valor predeterminado), las sesiones no persistirán después del reinicio de ese servidor web, como "/ tmp "a menudo se purga durante el reinicio. El concepto de una persistencia basada en el cliente se mantiene y cae con la persistencia del almacenamiento en el servidor, lo que podría fallar si se usa el directorio "/ tmp" para los datos de la sesión.
Estoy usando Ubuntu y mis sesiones están almacenadas en / var / lib / php5.
Como señaló el Sr. Taylor, esto generalmente se establece en php.ini. Por lo general, se almacenan como archivos en un directorio específico.
Para ubuntu 16.10 son sesiones guardadas en / var / lib / php / session / ...
¿Como funciona? ¿Cómo sabe que soy yo?
La mayoría de las sesiones establecen una clave de usuario (llamada sessionid) en la computadora del usuario que se parece a esto: 765487cf34ert8dede5a562e4f3a7e12. Luego, cuando se abre una sesión en otra página, escanea la computadora en busca de una clave de usuario y se ejecuta en el servidor para obtener sus variables.
Si borra la memoria caché por error, su clave de usuario también se borrará. Ya no podrá obtener sus variables del servidor ya que no conoce su identificación.
En mi máquina Ubuntu las sesiones se almacenan en
/var/lib/php/sessions
y tienes que hacerlo sudo lsen este directorio solo lsarrojará
ls: no se puede abrir el directorio '.': permiso denegado
Y en mi servidor Windows Wamp, las sesiones de php se almacenan en
C:\wamp64\tmp
y si instala php independiente en Windows, entonces no hay un valor establecido por defecto
session.save_path => no value => no value
Muchas de las respuestas anteriores son opacas. En mi opinión, el autor de esta pregunta simplemente quiere saber dónde se almacenan las variables de sesión de forma predeterminada. De acuerdo con esto: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions simplemente se almacenan en el servidor de forma predeterminada . Con suerte, otros encontrarán esta contribución significativa.