Foros del Web » Programando para Internet » PHP »

Tiempo de vida de sesion

Estas en el tema de Tiempo de vida de sesion en el foro de PHP en Foros del Web. He mirado la documentación de php y algunos mensajes del foro y he visto que hay que utilizar: Código PHP:     ini_set ( "session.cookie_lifetime" , $tiempo_en_seg ...
  #1 (permalink)  
Antiguo 18/08/2007, 14:59
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Tiempo de vida de sesion

He mirado la documentación de php y algunos mensajes del foro y he visto que hay que utilizar:
Código PHP:
    ini_set("session.cookie_lifetime",$tiempo_en_seg); # Tiempo de vida de las cookies
    
ini_set("session.gc_maxlifetime",$tiempo_en_seg); # Tiempo de vida de las sesiones 
para que una sesion tenga mas de 1440 segundos(24 minutos).

Puesto esto, en mi login hice un campo que pusiera el numero de minutos de duración de la sesion, que siemplmente seria el valor $tiempo_en_seg y me serviria para hacer una cookie y en el resto de paginas poner ese tiempo ampliado de sesion, pero parece ser que no me funciona al destruir la sesion (aunque con ini_get("session.gc_maxlifetime") los valores si cambian al mostrarlos).

No se si es que no se destruye bien la sesion al finalizar el tiempo de vida o que puede pasar. Este es el codigo:

Código PHP:
<?
# Duracion de la sesion (obtenida por cookie)
$clifetime=$_COOKIE['lifetime'];
if(isset(
$clifetime))
{    
# Validacion
    
if(!is_numeric($clifetime) || $clifetime==NULL$clifetime=60;
}
else
{    
# Por defecto 60 minutos
    
$clifetime=30;
}

ini_set("session.cookie_lifetime",$clifetime*60); # Tiempo de vida de las cookies
ini_set("session.gc_maxlifetime",$clifetime*60); # Tiempo de vida de las sesiones

$login_name="apologin";// Usamos la sesion de nombre definido.
session_name($login_name);// Iniciamos el uso de sesiones
session_start();

// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
// El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras
// con el navegador.
if (!isset($_SESSION['cokkNick']) && !isset($_SESSION['cokkPass'])){
session_destroy();// Borramos la sesion creada por el inicio de session anterior
include("apoweb_login_form.php");
exit;
}
?>
Antes al pasar 24 minutos se destruia la session automaticamente (me imagino que por el garbage collector) y ahora al pasar el tiempo que ponga no se destruye o "recolecta como basura" esa sesion.

Alguna idea de que hago mal?
Gracias
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #2 (permalink)  
Antiguo 19/08/2007, 11:39
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Tiempo de vida de sesion

No hay ninguna respuesta?

Con ini_set tengo esto:

session.gc_maxlifetime=1440
session.cache_expire=180
session.use_trans_sid=0
session.use_cookies=1

Quiero saber como puedo hacer que las sesiones me duren mas de 24 minutos (1440 segundos) y que no sea mediante base de datos, porque segun tengo entendido con session.gc_maxlifetime esto es posible, pero no funciona.

AYUDA!
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #3 (permalink)  
Antiguo 19/08/2007, 14:25
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Re: Tiempo de vida de sesion

te falta darle unset_session y destruir la cookie. Saludos.
__________________
Hospedaje Web al mejor costo!
  #4 (permalink)  
Antiguo 19/08/2007, 16:22
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Tiempo de vida de sesion

Te refieres al logout?

En el logout tengo algo asi:
Código PHP:
$usuarios_sesion="apologin";
session_name($usuarios_sesion);
session_start();// iniciamos sesiones
session_destroy();// destruimos la session de usuarios. 
No se donde quieres que ponga unset (aparte no aparece nada con unset_session() en php o no lo veo).

Saludos
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #5 (permalink)  
Antiguo 19/08/2007, 23:07
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Re: Tiempo de vida de sesion

ponlo en la parte esa del logout antes de destroy y claro que si existe, pero hay que buscar. Saludos
__________________
Hospedaje Web al mejor costo!
  #6 (permalink)  
Antiguo 20/08/2007, 06:15
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Tiempo de vida de sesion

Por unset_session() no viene nada, pero por unset() si: http://es2.php.net/manual/es/function.unset.php

De todas formas no creo que sea problema del logout. He puesto los unset() para las variables que tengo, y si al deslogar, la session se vence, pero cuando pasan los X segundos que puse con session.gc_maxlifetime no se acaba y sigue muchisimo rato mas.

Por eso no creo que sea problema de logout, sino cuando pasa el tiempo en el que debe "expirar" la sesion, pues que no expira realmente y sigue activa.

Código PHP:
$usuarios_sesion="apologin";
session_name($usuarios_sesion);
session_start();// iniciamos sesiones
unset($_SESSION['USER_ID']);
unset(
$_SESSION['cokkNick']);
unset(
$_SESSION['cokkPass']);
session_destroy();// destruimos la session de usuarios. 
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #7 (permalink)  
Antiguo 24/08/2007, 18:16
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Tiempo de vida de sesion

Ninguna respuesta?? No creo que sea tan dificil para genios como vosotros ;)
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #8 (permalink)  
Antiguo 24/08/2007, 18:36
Avatar de eskorbutin  
Fecha de Ingreso: junio-2006
Mensajes: 65
Antigüedad: 17 años, 9 meses
Puntos: 2
Re: Tiempo de vida de sesion

urgido, la función unser_session() no existe.

debes especificar session.gc_probability y session.gc_divisor

para que se borre en el tiempo que especificaste debes darle el valor de 100 a probability y el valor de 1 a divisor.

Me imagino que quieres establecer la duración la cookie por que has visto que el PHPSESSID por default se propaga por la cookie, no es necesario si no las vas a utilizar, ya que por defecto las cookies se borran hasta que cierres el navegador.


Dale una checada a esta página


Me explicaré ...

Después de el tiempo que tu le das en maxlifetime, las variables de sesión se concideran como basura, pero serán eliminadas hasta que el carro de basura pase. El carro de basura tiene una probabilidad de pasar cada que recargas la página, es decir, esa probabilidad la especificas con session.gc_probability y session.gc_divisor. Por defecto session.gc_probability vale uno y session.gc_divisor también, entonces se hace esto probabilidad = session.gc_probability / session.gc_divisor, entonces tiene una probabilidad de uno porciento de que pase el carro de basura al recargar la página, entonces solo es cuestión de modificar los valores para conseguir tu prometido.

Última edición por eskorbutin; 24/08/2007 a las 18:56
  #9 (permalink)  
Antiguo 31/08/2007, 10:17
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 21 años, 7 meses
Puntos: 1
Re: Tiempo de vida de sesion

Cita:
Iniciado por eskorbutin Ver Mensaje
urgido, la función unser_session() no existe.

debes especificar session.gc_probability y session.gc_divisor

para que se borre en el tiempo que especificaste debes darle el valor de 100 a probability y el valor de 1 a divisor.

Me imagino que quieres establecer la duración la cookie por que has visto que el PHPSESSID por default se propaga por la cookie, no es necesario si no las vas a utilizar, ya que por defecto las cookies se borran hasta que cierres el navegador.


Dale una checada a esta página


Me explicaré ...

Después de el tiempo que tu le das en maxlifetime, las variables de sesión se concideran como basura, pero serán eliminadas hasta que el carro de basura pase. El carro de basura tiene una probabilidad de pasar cada que recargas la página, es decir, esa probabilidad la especificas con session.gc_probability y session.gc_divisor. Por defecto session.gc_probability vale uno y session.gc_divisor también, entonces se hace esto probabilidad = session.gc_probability / session.gc_divisor, entonces tiene una probabilidad de uno porciento de que pase el carro de basura al recargar la página, entonces solo es cuestión de modificar los valores para conseguir tu prometido.
Sólo una cosita, el valor por defecto de session.gc_divisor es 100
y como el de session.gc_probability es 1 , session.gc_probability / session.gc_divisor serían 1 en 100 las posibilidades.

Saludos

Última edición por marceloxx6; 31/08/2007 a las 10:34 Razón: agregar saludos
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 06:34.