Foros del Web » Programando para Internet » PHP »

Problema con duración de la sesión

Estas en el tema de Problema con duración de la sesión en el foro de PHP en Foros del Web. Hola tengo un problema con la duración de la sesión, tengo el siguiente código de ejemplo que uso para hacer la prueba. Quiero que la ...
  #1 (permalink)  
Antiguo 26/10/2014, 03:29
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Problema con duración de la sesión

Hola tengo un problema con la duración de la sesión, tengo el siguiente código de ejemplo que uso para hacer la prueba. Quiero que la sessión dure 24 horas para que el usuario que esta realizando por ejemplo un formulario que lleva variables de sessión pueda continuar si lo deja a mitad por ejemplo y le dejo 24 horas.

El caso es que en una pestaña del navegador ejecuto el script pasando el parámetro get para iniciar la variable $_SESSION["autentificado"]. Quitando luego el parametro get y ver cuanto dura la sessión pero a la hora ma o menos actualizo para comrpobar y la session esta cerrada.

En el php.ini estos parámetros están a cero.
ini_set("session.cookie_lifetime",86400);
ini_set('session.gc_maxlifetime', 86400);



Código Java:
Ver original
  1. <?php
  2.  
  3. ini_set("session.cookie_lifetime",86400);
  4. ini_set('session.gc_maxlifetime', 86400);
  5. session_set_cookie_params(86400);
  6. session_start();
  7. echo ini_get('session.gc_maxlifetime');
  8. echo ini_get('session.cookie_lifetime');
  9. if($_GET["login"]==1){ $_SESSION["autentificado"]="SI";}
  10.  
  11. if ($_SESSION["autentificado"] != "SI") {
  12.  
  13.      echo "Session cerrada";
  14.  
  15. } else {
  16.  
  17.     echo "Session ok";
  18.  
  19. }
  20. ?>

Gracias por vuestra ayuda

Última edición por luisalberti; 26/10/2014 a las 03:48
  #2 (permalink)  
Antiguo 27/10/2014, 03:07
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con duración de la sesión

Hola sigo teniendo el mismo problema, tengo un problema con la duración de la sessión, por un lado buscando encontre que puede ser por el recolector de basura. Por eso he puesto session.cookie_lifetime con los mismos segundo 86400 = 24horas.

Mi problema es que la sessión no dura eso, coloco en un pestaña del navegador la url de este archivo y hago login con el parametro get como ejemplo para probar con este script pero a la media hora o hora se borra.

Con init_get obtengo session.cookie_lifetime,session.gc_maxlifetime y muestra 86400 he probado este archivo en mi serviro local con ubuntu y en uno hosting de 1and1 y sigue sin funcionar.

Mi idea es que la session dure 24 horas independiente si el usuario esta utilizando la apliacacion o la tiene en un pentaña o ventana sin cerrar claro.

En el php.ini los parametros para el recolector de basura estan así : session.gc_probability = 0 session.gc_divisor = 100 y session.cookie_lifetime = 0 y session.gc_maxlifetime = 0 aunque estos dos ultimos los cambio en el script.

Código PHP :

<?php
$nombre_sesion="login";
$duracion_sesion ="86400";
session_name($nombre_sesion);
session_set_cookie_params($duracion_sesion);
ini_set("session.cookie_lifetime",$duracion_sesion );
ini_set('session.gc_maxlifetime', $duracion_sesion);

session_start();

if($_GET["login"]==1){ $_SESSION["autentificado"]="SI";}

if ($_SESSION["autentificado"] != "SI") {

echo "Session cerrada";

} else {

echo "Session ok";

}
?>
Me crea el cookie con la fecha:


Alguna idea muchas gracias
  #3 (permalink)  
Antiguo 27/10/2014, 08:32
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Problema con duración de la sesión

Sabes cómo funcionan las cookies?

Por qué no guardas el dato de tu cookie en una BD, luego la comparas con la hora actual, y con DATEDIFF de PHP verificas si ya han pasado 24hs o no.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #4 (permalink)  
Antiguo 27/10/2014, 10:24
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con duración de la sesión

Hola loncho_rojas, mi problema es que la session no dura 24 horas de echo no dura ni uno hora. Lo de por que tengo ese script que tengo abajo para eso lo coloco utilizo el parametro get para definir $_SESSION["autentificado"] y lo dejo en una pestaña del navegador sobre la hora o hora y media actualizo la página y me indica "Session cerrada" que ya $_SESSION["autentificado"] no existiria.

Muchas gracias por tu ayuda
  #5 (permalink)  
Antiguo 27/10/2014, 10:57
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Problema con duración de la sesión

Pruebalo en todos los navegadores y dinos si es solo el que usas por defecto, o el resto también hace eso...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #6 (permalink)  
Antiguo 27/10/2014, 11:04
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con duración de la sesión

Buenas tardes loncho_rojas, Lo he probado con firefox y con chrome y no funciona.

Última edición por luisalberti; 28/10/2014 a las 01:41
  #7 (permalink)  
Antiguo 28/10/2014, 01:41
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con duración de la sesión

Tampoco me funciona intentando que la session dure hasta cerrar el navegador o que dure 60 segundos por ejmplo.
Código PHP:
Ver original
  1. <?php
  2. $nombre_sesion="login";
  3. $duracion_sesion =0;
  4. ini_set('session.gc_maxlifetime', $duracion_sesion);
  5. session_name($nombre_sesion);
  6. session_set_cookie_params($duracion_sesion);
  7. echo "session.gc_maxlifetime ".ini_get('session.gc_maxlifetime')."<br>";
  8. echo "session.cookie_lifetime ".ini_get('session.cookie_lifetime')."<br>";
  9. if($_GET["login"]==1){ $_SESSION["autentificado"]="SI";}
  10.  
  11. if ($_SESSION["autentificado"] != "SI") {
  12.  
  13.      echo "Session cerrada";
  14.  
  15. } else {
  16.  
  17.     echo "Session ok";
  18.  
  19. }
  20. ?>
Código PHP:
Ver original
  1. <?php
  2. $nombre_sesion="login";
  3. $duracion_sesion ="86400";
  4. session_name($nombre_sesion);
  5. ini_set("session.use_cookies", 1);
  6. ini_set("session.use_only_cookies", 1);
  7. ini_set("session.cookie_lifetime",$duracion_sesion);
  8. ini_set('session.gc_maxlifetime', $duracion_sesion);
  9. session_set_cookie_params($duracion_sesion);
  10. echo "session.gc_maxlifetime ".ini_get('session.gc_maxlifetime')."<br>";
  11. echo "session.cookie_lifetime ".ini_get('session.cookie_lifetime')."<br>";
  12. if($_GET["login"]==1){ $_SESSION["autentificado"]="SI";}
  13.  
  14. if ($_SESSION["autentificado"] != "SI") {
  15.  
  16.      echo "Session cerrada";
  17.  
  18. } else {
  19.  
  20.     echo "Session ok";
  21.  
  22. }
  23. ?>

Alguna Ayuda muchas gracias
  #8 (permalink)  
Antiguo 28/10/2014, 06:36
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con duración de la sesión

Hola encontre por la red que en el cron hay un proceso:
/etc/cron.d/php5: crontab fragment for php5 This purges session files older than X, where X is defined in seconds as the largest value of session.gc_maxlifetime from all your php.ini files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime Look for and purge old sessions every 30 minutes 09,39 root [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/#lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/#sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime)

El cual lee la variable session.gc_maxlifetime del php.ini y una vez pasado el tiempo que indica dicha variable, hace un borrado del fichero que guarda la información de la sesión. Pero igualmente en el script php le indico que ini_set('session.gc_maxlifetime', $duracion_sesion); tenga la misma duración.

Lo estoy probando en local aún no se si funciona pero no lo veo como algo bien ya que en el hosting 1an1 tampoco me funciona.

Alguna idea

Etiquetas: formulario, sesión, variable
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 13:56.