Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/08/2007, 14:59
Avatar de shakaran
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