Foros del Web » Programando para Internet » PHP »

Sesiones de PHP, duración de sesión y AJAX

Estas en el tema de Sesiones de PHP, duración de sesión y AJAX en el foro de PHP en Foros del Web. Estimados todos: Las circunstancias: Estoy trabajando en un Servidor compartido y el que lo administra tiene configurado su Apache para que las sesiones caduquen después ...
  #1 (permalink)  
Antiguo 03/07/2007, 19:29
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Sesiones de PHP, duración de sesión y AJAX

Estimados todos:

Las circunstancias: Estoy trabajando en un Servidor compartido y el que lo administra tiene configurado su Apache para que las sesiones caduquen después de 20 minutos de inactividad (es decir, después de 20 minutos de no hacerle clic a nada que envíe datos y que empiece con un <?php session_start(); ?>).

Lo que quiero hacer:
Que la sesión se mantenga abierta aún si un usuario con su sesión iniciada demora más de 20 minutos antes de hacer clic en el botón Enviar de un formulario.

Porqué lo necesito: El usuario puede tardar más de 20 minutos en completar ciertos formularios y es muy frustrante hacer clic en Enviar y que en vez de insertar los datos, te mande a la página de validación (o sea, que tengas que llenar el formulario otra vez).

Cómo he pensado hacerlo: Usando AJAX, concretamente, el framework Prototype y el objeto Ajax.PeriodicalUpdater() llamando a un archivo PHP que "reviva la sesión" una vez por minuto. Este truco sucio parece haber funcionado hasta ahora pues la sesión se ha mantenido activa pese a no tocar mi computadora por más de una hora..

Las dudas:
  • ¿Tiene algún inconveniente esto?
  • Si es así, ¿qué alternativas tengo?
  • ¿Hay alguna mejor forma de hacerlo?
Comentarios finales: He probado cambiando con .htaccess algunos aspecto de la configuración del Servidor, pero sin éxito. Por cierto, que he posteado temas al respecto y al final no lo conseguí. También he buscado en el foro, y googleado por algo de luz, sin éxito. Tal vez no estoy haciendo las preguntas correctas en los buscadores.

Muchas gracias de antemano.

PD. Excelente la nueva imagen de ForosDelWeb

Última edición por Escoffie; 03/07/2007 a las 19:35
  #2 (permalink)  
Antiguo 03/07/2007, 20:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Sesiones de PHP, duración de sesión y AJAX

Creo tu opcion es lo mejor y mas acertado, yo lo habia implementado con un iframe oculto, pero es lo mismo, y creo estas por un buen camino ya que asi te evitas inclusive escuchar que el explorador quiere navegar.

Saludos.
  #3 (permalink)  
Antiguo 03/07/2007, 20:58
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Re: Sesiones de PHP, duración de sesión y AJAX

Gracias por tu respuesta, GatorV.

Ya había pensado igual en el iFrame igual, pero nunca logré hacerlo funcionar.

Dos dudas:
1. ¿Qué opinas de que sea cada minuto? En teoría da igual si es cada minuto o cada 10, pero como no tengo la certeza de cuánto duran realmente las sesiones, pues lo hice así.
2. El archivo PHP al que llamo con el Ajax.PeriodicalUpdater() sólo tiene adentro el <?php session_start(); ?> ¿Es suficiente con eso o debería hacer algo más?

Saludos y gracias por tus comentarios.
  #4 (permalink)  
Antiguo 03/07/2007, 21:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Sesiones de PHP, duración de sesión y AJAX

Esta bien cada minuto, yo en mi caso lo hago cada 30 segundos, y si tienes un poco de inseguridad puedes imprimir algun contenido aleatorio para que IE no cachee la respuesta y tengas luego problema con eso.

Aparte segun recuerdo el PeriodicalUpdater de AJAX tiene un metodo de que si en cierto tiempo no ha cambiado la respuesta, se empieza a duplicar asi que en teoria despues de un tiempo si se cerraria ya que el tiempo es exponencial, por eso mejor yo si considero que imprimas por decir el time() asi este cambia y el poll se hace cada minuto seguro.

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 14:27.