Foros del Web » Programando para Internet » PHP »

Sesiones, ese misterioso mundo

Estas en el tema de Sesiones, ese misterioso mundo en el foro de PHP en Foros del Web. Hola a todos, mi problema con las sesiones es el siguiente: tengo unas variables de sesión definidas, que funcionan perfectamente durante 24 minutos, después de ...
  #1 (permalink)  
Antiguo 11/06/2005, 04:55
Avatar de skaperna  
Fecha de Ingreso: marzo-2005
Ubicación: Barcelona
Mensajes: 84
Antigüedad: 19 años, 1 mes
Puntos: 1
Busqueda Sesiones, ese misterioso mundo

Hola a todos, mi problema con las sesiones es el siguiente: tengo unas variables de sesión definidas, que funcionan perfectamente durante 24 minutos, después de ese tiempo, se pierde el valor.

Buscando, encontré que era debido a que en el php.ini, por defecto, session.gc_maxlifetime está a 1440 segundos (24 minutos). Perfecto, hago un

Código PHP:
ini_set("session.gc_maxlifetime","7200"); 
y cambio la configuración a 7200 segundos... (y el cambio se hace bien, lo comprobé con un echo) pero al cabo de 24 minutos se siguen perdiendo los valores de las variables!!!

La página inicial de declaración de variables contiene el siguiente código al inicio de la página:

Código PHP:
session_start();
ini_set("session.gc_maxlifetime","7200");
$_SESSION['gestor_valor']=$valor;
$_SESSION['gestor_name']=$name
y en las siguientes páginas tengo este otro, aunque en algunas no utilice las variables de sesión definidas.

Código PHP:
session_start();
ini_set("session.gc_maxlifetime","7200"); 
Leí, que a cada petición del servidor las opciones vuelven a ponerse en sus valores por defecto, por eso pongo el ini_set en todas las páginas.

Ahora bien, es necesario el session_start?? se debe poner otra cosa?? Para más información, diré que la sesión no se pierde, solo el valor de las varibales pq si miro el session_id(), me da su correspondiente id.

Alguien tiene alguna idea de lo que pasa??? Añado la configuración del php.ini... aunque, creo que está todo bien...

Código PHP:
PHP Version 4.3.10

session

Session Support                            enabled 
Registered save handlers                 files user 

Directive                              Local Value    Master Value
session
.auto_start                         Off       Off
session
.bug_compat_42                    On           On
session
.bug_compat_warn                    On         On
session
.cache_expire                       180            180
session
.cache_limiter                     nocache    nocache
session
.cookie_domain                   no value    no value
session
.cookie_lifetime                      0               0
session
.cookie_path                         /             /
session.cookie_secure                        Off     Off
session
.entropy_file                      no value    no value
session
.entropy_length                     0               0
session
.gc_divisor                          100               100
session
.gc_maxlifetime                      1440            1440
session
.gc_probability                         1               1
session
.name                            PHPSESSID    PHPSESSID
session
.referer_check               no value    no value
session
.save_handler                   files              files
session
.save_path                         /tmp              /tmp
session
.serialize_handler                php                php
session
.use_cookies                   On               On
session
.use_only_cookies              Off             Off
session
.use_trans_sid                 On                On 
Sé que el contenido de este mensaje no es nuevo, pero necesito saber si no funciona pq no se puede hacer, o pq yo lo estoy haciendo mal... así haré cambios según sea una o otra cosa...

Gracias de verdad...
Skaperna
__________________
La sangre son las lágrimas del alma...
  #2 (permalink)  
Antiguo 11/06/2005, 09:48
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Algunas cosas:
- Sí se puede hacer.
- Supongo que habrá que hacer las cosas en otro orden:
Código PHP:
ini_set("session.gc_maxlifetime","7200");
session_start(); 
De esa manera "preparas" la configuración antes de iniciar la sesión.
Saludos
  #3 (permalink)  
Antiguo 12/06/2005, 15:57
Avatar de skaperna  
Fecha de Ingreso: marzo-2005
Ubicación: Barcelona
Mensajes: 84
Antigüedad: 19 años, 1 mes
Puntos: 1
Hola,

siento no haber contestado antes... lo que comentas, es como lo tenía puesto en un inicio, pero tampoco me dio resultado... se seguian perdiendo las variables... por eso lo puse a la inversa, pq pensaba que, a lo mejor, primero se debería seguir con la sesion iniciada.

Gracias
Skaperna
__________________
La sangre son las lágrimas del alma...
  #4 (permalink)  
Antiguo 12/06/2005, 21:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Teóricamente debes usar ini_set() en el orden que te menciona jpinedo .. Así mismo tendrás que hacer dicho ini_set() en -todos- los scritps de tu aplicación que usen sesiones.

Si tienes acceso a tu php.ini .. mejor definelo en el mismo:
session.gc_maxlifetime = le das el tiempo que necesites en segundos

O a lo sumo usando un "php_value" en un .htaccess (si usas Apache).

Un saludo,
  #5 (permalink)  
Antiguo 20/06/2005, 11:22
 
Fecha de Ingreso: junio-2005
Mensajes: 1
Antigüedad: 18 años, 10 meses
Puntos: 0
gc_maxlifetime

has probado con lo siguiente

ini_set('session.gc_maxlifetime', time()+31536000); // 1 año

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 02:34.