Ver Mensaje Individual
  #9 (permalink)  
Antiguo 07/10/2011, 13:05
Avatar de venom_mau
venom_mau
 
Fecha de Ingreso: julio-2009
Mensajes: 152
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: cuando un usuario abandona una pagina

Bueno, sirve que alguien se da una vuelta y mejora el script o me regaña porque es mala práctica

Y ya no recuerdo si lo hice o sólo lo ocupé y modifiqué para mi necesidad, si se parece al código de alguien, pues disculpa, pero que bien me funcionó

Este script lo llamo a cada página de mi sitio asegurado con la función include

Código PHP:

<?
   
//iniciamos la sesión

   
session_name("usuario");
   
$variable=$_SESSION['usuario'];
   
session_start();

   
//antes de hacer los cálculos, compruebo que el usuario está logueado
   //utilizamos el mismo script que antes

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

       
//si no está logueado lo envío a la página de autentificación

       
header("Location: index.html");
   } else {

       
//si no, calculamos el tiempo transcurrido

       
$fechaGuardada $_SESSION['ultimoAcceso'];
       
$ahora date("Y-n-j H:i:s");
       
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));

       
//comparamos el tiempo transcurrido

        
if($tiempo_transcurrido >= 1200) {

        
//si pasaron x minutos 

       //aquí tenía una conexión y actualización a bd pero es a gusto del programador
       
session_unset();
       
session_destroy();  
           
header("Location: index.html"); //envío al usuario al indice

         //sino, actualizo la fecha de la sesión
       
}else {

          
$_SESSION['ultimoAcceso'] = $ahora;
       }
   }
?>
Ahora si se fijan estoy estableciendo 1200 segundos de inactividad para que destruya la sesión.

Investigué algo acerca de esto, pregunté en este foro en el apartado de js pero no encontré la solución definitiva para borrar datos de sesiones no cerradas correctamente, incluso me topé con la configuración del archivo php.ini, pero no sirve si usas un servidor que no es tuyo, ahí tendrías que tener contacto con un administrador...

Suerte y adelante para usarlo o modificarlo o criticarlo.