Foros del Web » Programando para Internet » PHP »

Duración de la sesión

Estas en el tema de Duración de la sesión en el foro de PHP en Foros del Web. Hola, tengo una aplicación en php en la que utilizo sesiones, y me he dado cuenta de que si dejo dejo la sesión abierta, no ...
  #1 (permalink)  
Antiguo 28/07/2006, 10:25
 
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 11 años, 8 meses
Puntos: 0
Duración de la sesión

Hola, tengo una aplicación en php en la que utilizo sesiones, y me he dado cuenta de que si dejo dejo la sesión abierta, no se cierra al cabo del tiempo ni al cerrar el navegador.

Quisiera saber la forma de hacer que la sesión se cierre al de x segundos de inactividad y si hay forma de hacerlo sin tener que escribirlo en cada uno de los script php en los que he hecho session_start().

Saludos
  #2 (permalink)  
Antiguo 28/07/2006, 10:52
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 11 años, 10 meses
Puntos: 3
Modifica el tiempo en el php ini..
creo es en esta linea:
session.gc_maxlifetime
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #3 (permalink)  
Antiguo 29/07/2006, 02:02
 
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 11 años, 8 meses
Puntos: 0
Ya lo he modificado, pero sigue igual, no se cierra la sesión pasado el tiempo establecido en session.gc_maxlifetime

No se si habrá que modificar algo más.

Última edición por pepe500; 29/07/2006 a las 02:18
  #4 (permalink)  
Antiguo 31/07/2006, 07:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por pepe500
Ya lo he modificado, pero sigue igual, no se cierra la sesión pasado el tiempo establecido en session.gc_maxlifetime

No se si habrá que modificar algo más.
Y como propagas el SID tu? (tanto en tu configuración de PHP como en código)

Si no sabes ni de que se trata el SID (Identificador Único de Sesión) lo más probable es que lo estés propagando por Cookies .. más encima como PHP deja por defecto la duración de dicha cookie que usa para propagar el SID que es tipo "cookie de sesión" (0). Esto lo define la directiva: session.use_cookies (y/o opcional: session.use_only_cookies) y directivas afines que ajustan propiedades de esa cookie que PHP creará para propagar el SID en ese modo.

En ese caso, mientras pases entre páginas el SID sigue siendo válido y por ende se reinicia el contandor interno del tiempo de expiración de tu sesión.

La sesión muere .. o mejor dicho en este caso (propagación del SID en cookies y tiempo de vida de esa cookie como "de sesión" (0)) al cerrar la última ventana de tu sitio .. ahí la cookie que propaga el SID se muere y por ende pierdes el enlace del SID creado con el cliente que lo creó .. aunque la sesión siga válida y activa por el tiempo que define session.gc_maxlifetime.

En resumen .. lo primero es saber como un propaga el SID .. saber que se puede propagar de dos formas: cookies y URL .. de ahí ver que método te combiene más y sus detalles de cada uno.

Lo recomendable es propagar el SID en cookies (SI), pero si quieres expirar tu sesión a tiempo .. no sólo debes ajustar session.gc_maxtimelife que define la duración de tu sesión .. sino el del "SID" que va propagado en tu cookie (la que crea PHP para tal fin): session.cookie_lifetime .. el valor debería ser teóricamente igual o superior al que define session.gc_maxtimelife

Por otro lado, PHP y su sistema de sesiones nativo no es de lo mejor .. hay otros sistemas que incorporan y/o suplantan/mejoran funcionalidades para el manejo de sesiones mucho más avanzados, por ejemplo:

ADOdb
http://phplens.com/lens/adodb/docs-session.htm

Es necesario leer la ducumentación oficial sobre sesiones .. todo esto está indicado ahí.
www.php.net/session


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:41.