Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/09/2008, 03:03
phaapron
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta SESSIONES que caducan antes de tiempo.

Hola expertos, en primer lugar muchas gracias por leer mi post , tengo un problema con mis sessiones, y en segundo lugar no me enrollo, al grano:

Mi configuración php.ini:

Código:
[Session]
session.auto_start = 0
session.name = PHPSESSID
session.save_handler = files
session.save_path = "X:/APPSERV/PHP5/SESSIONS"
session.use_cookies = 1
session.use_only_cookies = 1
session.cookie_secure =
session.cookie_lifetime = 3600
session.cookie_path = /
session.cookie_domain = 
session.cookie_httponly = 
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor     = 100
session.gc_maxlifetime = 3600
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
;session.entropy_length = 16
;session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 60
session.use_trans_sid = 0
session.hash_function = 1
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,form=,fieldset="
Un fragmento de código de todas y cada una de las páginas:

Código PHP:
<?php
session_start
();
if (!
$_SESSION["nombre_usuario"]) {
    
$_SESSION["referer"] = $PHP_SELF;
    
header("Location: index.php");
    exit();
}
// Código visible cuando el usuario se ha loggeado...
?>
Un pequeño Script JavaScript simplemente a modo informativo al navegante:

Código:
var TimeOut=3600;
function CountDown() {
	if (TimeOut > 0) {
		top.document.title = 'Título de mi página (' + TimeOut + ')';
		TimeOut--;
	}
	else { top.document.title = 'Título de mi página (Desconectado)'; }
	setTimeout("CountDown()", 1000);
}
CountDown();
El problema:

Supuesta mente las sessiones están programadas para que duren 3600 segundos / 1 hora ¿no?, pues le pide al usuario que pase por index.php aleatoria mente cuando el título no llega ni siquiera a mostrar (3200), lo hace aleatoria mente, lo cual me hace pensar que gc_probability y gc_divisor puedan estar afectando esto, pero lo he tenido puesto 1 mes (2592000 segundos) tanto en cookie_lifetimo y gc_maxlifetime y aun así sigue pasando esta movida.

Solamente existe una página donde se destruye la sessión (logout.php) al igual que solo existe una página donde se crea $_SESSION["nombre_usuario"] (login.php), no lo hace siempre con la misma página por lo que todas las páginas están bien programadas (o al menos son todas iguales), todas tienen las primeras líneas que mostré antes, el error me tiene desconcertado por que obliga a los usuarios a reloggear cuando apenas llevan unos 10 minutos dentro, a mi incluso también me lo hace mientras programo y pruebo y ya sabéis lo que se tarda en debuggar que estas dando actualizar cada 10 o 30 segundos... (aunque yo uso un meta refresh pero bueno).

Pase por php.net, me he leído mas de 20 post / tutoriales / documentación online acerca de sesiones y creerme que no sé todavía que es lo que ocurre, por que si pensásemos que es la máquina donde pruebo el código podría ser... pero ¡no! en el servidor también me lo hace y está exactamente igual los dos php.ini, mismas rutas y mismas versiones, no lo entiendo...

¿Alguna idea amigos?