Sesiones php

Tengo hecha una aplicación en php (bajo plataforma linux y atacando a bbdd postgresql). Pero tengo un problema: si yo estoy editando o dando de alta o viendo algún dato (es decir, dentro de algún menú de mi aplicación) y pasa un cierto tiempo, luego al pulsar un botón (para guardar datos, acceder a otro menú o borrar etc) pues se olvida de la acción de ese botón y regresa a la página de inicio (en la que el usuario se debe identificar). Esto es un problema, porque los usuarios de la aplicación pueden tardar cierto tiempo entre que escriben y no escriben, entonces, luego pierden sus datos. Yo creo que es problema de las sesiones, como si dejaran de existir, pero no sé, es raro, porque a lo mejor no tiene nada que ver con el tiempo de la sesión o no sé. Al principio de cada script compruebo que esté la sesión iniciada y sea la correcta, y al pulsar un botón se recarga dicho script...
No sé, esto ya llega a la desesperación... ¿alguien puede ayudarme

1 respuesta

Respuesta
1
Bueno session. Gc_maxlifetime el tiempo esta en segundos, para este caso se tiene para 5 minutos, aquí te explico algo más:
- session.gc_probability
Indica el número de veces de cada 100 que se ejecuta el recolector de basura
de las sesiones. Éste proceso borra los ficheros de las sesiones que hallan
caducado ya.
Defecto: 1 cada 100 (1%)
- session.gc_maxlifetime
Indica el número de segundos que deben haber pasado desde la última actualización
para que se considere basura.
Session_cache_limiter() devuelve el nombre del limitador de caché actual. Si se especifica limitador_del_cache, el nombre del limitador de caché actual se cambia al nuevo valor.
El limitador de caché controla las cabeceras HTTP de control del caché enviadas al cliente. Estas cabeceras determinan las reglas por las que el contenido de la página puede ser guardado en el caché local del cliente. Cambiando el limitador de caché a nocache, por ejemplo, impedirá cualquier tipo de almacenamiento en el caché por parte del cliente. Un valor de public, en cambio, permitiría el almacenamiento en el caché. También se puede cambiar a private, que es un poco más restrictivo que el public.
Te recomiendo bajarte el manual de php que lo encuentras en www.php.net y que tiene información acerca de muchos temas del PHP.
Hola:
Gracias por contestar... ¿Me puedes explicar esas funciones? Es decir, si es en segundos, minutos... cuál debería usar... etc
ini_set('session.gc_probability',100); ini_set('session.gc_maxlifetime',300); session_name ("nombre");
session_cache_limiter ("private");
Y también hay otra cosa que no entiendo: ¿Qué diferencia hay entre que session_cache_limiter sea private, public y nocache?
PHP tiene una función llamada "session_cache_limiter()" que nos sirve para averiguar el limitador de cache actual, existen 3 modos: "nocache", "public" y "private"; cada una de estas posee una manera determinada de manejar la caducidad de las variables de sesión que se envían al navegador. Un detalle tanto "session_name()" como "session_cache_limiter()" deben ser declarados antes que "session_start()".
<?php
session_name ("nombre");
session_cache_limiter ("private");
session_start();
echo "<br> El nombre de la sesion es: ".session_name();
echo "<br> El limitador de la sesion es: ".session_cache_limiter();
?>
Aquí tienes un código que te permite que una sesión tenga una duración deternminada:
ini_set('session.gc_probability',100; ini_set('session.gc_maxlifetime',300); session_start();»,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas