Ver Mensaje Individual
  #10 (permalink)  
Antiguo 19/04/2004, 08:55
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues de eso se trata .. de verificar la existencia de tu sesión antes de actuar sobre tus Base de datos y demás procesos para darle el mensaje al usuario de que "su sesión expiró" (por qué PHP caducó la sesión automáticamente según las directivas que te mencioné). Lamentablemente esto sería engorroso si estubiera tu usuario actuando sobre un formulario .. lo rellena .. le dá al submit y PHP decide (al ejecutarse tu script que valida la sesión) que ya no es válida la sesión .. Para evitar eso, puedes recargar la página o mejor un frame/iframe oculto que haga peticiones al servidor cosntantemente como para que se pueda dar un aviso al cliente lo más exacto posible de que su sesión expiró ..

Ejemplo ..
En un iframe oculto o frame de tamaño 0 .. metes una pagina HTML que tenga un <meta> de refresh y que a su vez sea algo tipo:

Código PHP:
<html>
<head>
<meta refresh .......>
</head>
<body>
<?
session_start
();
if (!isset(
$_SESSION['nose'])){
?>
<javacript languaje='javascript'>
alert('su sesion expiró')
</javascript>
<?
}
?>
</html>
De esta forma .. se lanza una ventanita javascript si la sesión (alguna variable de sesión) no existe(propaga el SID si no propagas el SID en cookie en el <meta> a la hora de llamar a la página que refrescas .. que será si misma).

Así son las "sesiones" y PHP .. PHP no se enterará del tiempo o de lo que está haciendo el usuario hasta que no pida una página al servidor (recargues la página, mandes un link .. mandes un formulario ... etc ..)

Si propagas el SID en cookies con tiempo de expiración (de la cookie) = 0 y juega con el tiempo de session.gc_maxtime_life .. El SID no quedará en historiales de navegadores y la cookie muere al cerrar hasta la última ventana que puedas tener abierta de tu sitio. Por defecto PHP le dá 1440 segundos (sobre 24 minutos o algo así) a la expiración del SID .. En teoría en esos 24 minutos te puedes mover por ventanas que abras y links que muevas en tu sitio. Y si cierras el sitio (todas sus ventanas) la cookie muere y ya no se propagará el SID que estubieras usando (la sesión seguiría activa .. pero como no tienes el SID .. pues PHP al próximo session_start() creará uno nuevo = otra sesión (otro archivo sess_23434adfasdf)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.