Foros del Web » Programando para Internet » PHP »

Problema con la duración de las sesiones

Estas en el tema de Problema con la duración de las sesiones en el foro de PHP en Foros del Web. Hola a todos. Mi problema con las sesiones en PHP se me antoja un tanto extraño... simplemente si el usuario apaga su ordenador pierde su ...
  #1 (permalink)  
Antiguo 23/08/2009, 15:03
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Problema con la duración de las sesiones

Hola a todos.

Mi problema con las sesiones en PHP se me antoja un tanto extraño... simplemente si el usuario apaga su ordenador pierde su sesión.

El código que utilizo para las sesiones es muy simple, en cada petición hago lo siguiente justo al inicio:

Código PHP:
session_save_path("/home/xxx/sessions");
session_name("X_x_X");
session_start(); 
y en el momento que el usuario consigue autentificarse correctamente:

Código PHP:
session_set_cookie_params(1296000);
session_regenerate_id(true); 
En el lado cliente parece que todo funciona correctamente, ya que los distintos navegadores me informan de que la cookie X_x_X caduca a los 15 días. Si cierro el navegador y vuelvo a abrirlo sucede lo esperado, PHP carga los datos del usuario en $_SESSION sin ningún problema.

Sin embargo, si apago el ordenador y vuelvo a encenderlo la sesión deja de funcionar, no estoy seguro pero supongo que por el cambio de IP —ya que no conozco otra forma para que el servidor, Apache, sepa que he reiniciado mi sistema.

Los navegadores siguen teniendo la cookie de la sesión, pero simplemente la variable $_SESSION aparece vacía :S .

¿Se os ocurre qué puede estar pasando o alguna forma de investigar el problema?

Saludos y gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 23/08/2009, 15:11
 
Fecha de Ingreso: agosto-2008
Mensajes: 382
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Problema con la duración de las sesiones

si tienes una ip dinámica, seguramente sea ese el error.
__________________
la experiencia es la mejor de las escuelas, pero la obtienes cuando ya no la necesitas.

Yo soy aquel que mucho hace trabajar a la gente del foro, pero siempre gratifico con un karma
  #3 (permalink)  
Antiguo 23/08/2009, 17:00
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Problema con la duración de las sesiones

Será la causa de que suceda, pero no creo que sea ese el error, ya que por ejemplo las sesiones de otros sitios web (Foros del Web, por ejemplo) no se ven afectadas cuando reinicio el sistema, por lo que debe ser un error de mi aplicación o del servidor que utilizo.
  #4 (permalink)  
Antiguo 23/08/2009, 23:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con la duración de las sesiones

¿Cuando grabas los cookies que datos son los que colocas para verificar?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 24/08/2009, 01:40
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Problema con la duración de las sesiones

:S La verdad es que no entiendo bien tu pregunta... La cookie lo único que tiene es el identificador de la sesión, pero vamos, que esa cookie la crea automáticamente PHP.
  #6 (permalink)  
Antiguo 24/08/2009, 04:17
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: Problema con la duración de las sesiones

talvez sea por el tiempo de vida que tiene la sesion, uno es la duracion de la cookie que grava cuando creas una sesion, otra es el tiempo de vida de la sesion misma... esos parametros los podes modificar desde el php.ini, fijate ;)
  #7 (permalink)  
Antiguo 24/08/2009, 07:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con la duración de las sesiones

Ok, lo que pasa es que como indicaste que apagabas la maquina y cuando la volvias a subir como quiera te quedabas logueada en esta pagina, por eso pense que estabas usando el cookie para mantenerte conectado. Lo más probable que estas sesiones se basan no en el IP de la persona sino más bien en el username y el identificador, por eso cuando apagas la maquina y la vuelves a subir se mantiene la sesion pero como aproximadamente por 20 minutos. Si lo haces con IP te va a pasar que cuando la persona apague la maquina y obtenga otro dinamicamente va a tener que loguearse porque tiene otro.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 24/08/2009, 13:01
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Problema con la duración de las sesiones

Cita:
talvez sea por el tiempo de vida que tiene la sesion, uno es la duracion de la cookie que grava cuando creas una sesion, otra es el tiempo de vida de la sesion misma... esos parametros los podes modificar desde el php.ini, fijate ;)
Creo que te refieres a la opción de configuración session.gc_maxlifetime, y creo que tienes toda la razón... voy a hacer pruebas y cuando tenga una conclusión os la comento.
  #9 (permalink)  
Antiguo 05/09/2009, 08:11
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Problema con la duración de las sesiones

Nada... no logro entender que es lo que pasa, pero tampoco consigo nada modificando esa opción :S

¿Alguna otra idea?
  #10 (permalink)  
Antiguo 05/09/2009, 08:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con la duración de las sesiones

Te sugiero modificar en el php.ini

Cita:
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0
Cambiale el 0 por el tiempo que tu quieres que dure la sesion. Tienes que declararlo en segundos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 05/09/2009, 08:40
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Problema con la duración de las sesiones

El problema es que en un servidor compartido no te dejan modificar el php.ini, por razones obvias. Además, ese parámetro ya lo modifico con

Código php:
Ver original 

y funciona correctamente —el navegador guarda la cookie durante el tiempo especificado, 15 días, en lugar de hasta que se cierra, valor por defecto.

Creo que el problema debe estar en el lado del servidor, pero no se en dónde.
  #12 (permalink)  
Antiguo 20/11/2009, 03:07
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Problema con la duración de las sesiones

Bueno, después de demasiado tiempo (pido disculpas, pero es lo que tiene estar con varios proyectos al mismo tiempo) doy por solucionado el problema y dejo este post por si le sirve a alguien de algo.

Básicamente lo he solucionado añadiendo la línea

Código:
php_value "session.gc_maxlifetime" 1296000
al .htaccess principal de la web, modificando de esta forma la configuración por defecto de cada uno de los scripts PHP del sitio y haciendo que ninguno borre antes de tiempo el archivo de sesión (en el lado del servidor, no la cookie del navegador, hecho que me desconcertaba) mediante el recolector de basura de sesión (por llamarle de algún modo) de PHP. Más información: http://pl.php.net/manual/en/session....gc-maxlifetime.

Muchas gracias a todos, sobretodo a bioxido, que me ha puesto sobre la pista del verdadero problema.
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:29.