¿Qué sucede con la matriz $ _SESSION si una sesión de PHP se agota en medio de una solicitud?

StackOverflow https://stackoverflow.com/questions/1002935

  •  05-07-2019
  •  | 
  •  

Pregunta

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

session_start();

if(! isset(

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

session_start();

if(isset(

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

session_start();

if(! isset(

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

<*>

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

<*>

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>SESSION['name']; // will this line throw an error?

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>SESSION['name'])) { $name =

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

session_start();

if(! isset(

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

<*>

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

<*>

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>SESSION['name']; // will this line throw an error?

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>SESSION['name']; } else { echo 'Name is not set'; exit; } // bunch of code here echo 'Name is ', $name;

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

Siempre me he preguntado, si una sesión de PHP se agota durante la mitad de la ejecución de un script, ¿el contenido de la matriz $ _SESSION seguirá estando disponible hasta que finalice la ejecución del script? Por ejemplo:

<*>

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>SESSION['name']; // will this line throw an error?

¿Es práctico copiar variables de sesión en el ámbito local para poder leerlas más adelante en el script sin tener que seguir buscando un tiempo de espera de sesión? Algo así como:

<*>
¿Fue útil?

Solución

no te preocupes por esas cosas. No le pasará nada a la sesión. Se inicializa con sessioni_start () y $ _SESSION siempre estará disponible dentro de su script.

Otros consejos

La duración predeterminada de la sesión de tres horas se restablece cada vez que abre la sesión (consulte session_cache_expire ), por lo que la única forma en que una sesión podría expirar en medio de una solicitud es si una solicitud tarda tres horas en procesarse. Por defecto, las solicitudes de PHP expiran después de solo 30 segundos, por lo que no hay peligro de que la sesión caduque durante una solicitud. Además, la variable $ _SESSION no cambiará repentinamente en medio de una solicitud. Se llena cuando comienza la sesión, y eso es todo.

Las variables se copian en $ _SESSION global en la solicitud inicial, por lo que tiene el mismo efecto que copiarlo en una variable local.

Sin embargo, para mayor claridad, tiene sentido copiarlo en una variable local. Especialmente si planeas usar la variable varias veces. Puede ser difícil leer el código que tiene $ _SESSION ['variable'] por todas partes.

Lo que necesitaba comprender es cómo funcionan las sesiones. Un cliente que accede a un script usando un $ _SESSION super global solo conoce la clave de la sesión que le pertenece (almacenada en cookie / URL). Esto significa que los datos de la sesión en sí no tienen nada que ver con el cliente. Si tiene la clave de los datos de sesión que desea usar, puede usarla. Las versiones anteriores de PHP tenían algunos agujeros de seguridad porque las sesiones se almacenaban en algún lugar al que se podía acceder fácilmente (no recuerdo los detalles).

Básicamente, si tiene el ID de sesión en un script PHP, tiene acceso a esa sesión a menos que la memoria de la máquina se haya vaciado / la unidad de disco duro esté dañada (es decir, reinicio de la computadora / falla del dispositivo).

Espero que esto ayude, de lo contrario, vaya a php.net y profundice en los detalles sobre cómo funcionan las sesiones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top