Foros del Web » Programando para Internet » PHP »

Mostrar alerta cuando falte 20 segundo para cerrar la sesión

Estas en el tema de Mostrar alerta cuando falte 20 segundo para cerrar la sesión en el foro de PHP en Foros del Web. Buenas tardes, quiero que cuando falta 20 segundos para cerrar sesión por inactividad se muestre un mensaje, lo estuve intentanto pero no me funciona, este ...
  #1 (permalink)  
Antiguo 26/02/2015, 13:40
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 12 años, 7 meses
Puntos: 1
Mostrar alerta cuando falte 20 segundo para cerrar la sesión

Buenas tardes, quiero que cuando falta 20 segundos para cerrar sesión por inactividad se muestre un mensaje, lo estuve intentanto pero no me funciona, este es mi código para cerrar la sesión a los 10 minutos por inactividad. Que debería de agregarle para que funcione? que tengo malo?

Código PHP:
<?php
    session_start
();
    
// establecemos el tiempo de espera en segundos
    
$inactivo 600;
    if (isset(
$_SESSION["timeout"])) {
        
$tiempoSession time() - $_SESSION["timeout"];
      if (
$tiempoSession $inactivo) {
            
// destruimos la sesión y desconectamos al usuario
            
session_destroy();
            
header("Location: ./index.php");
        }
    }
    
// el usuario interactúa por primera vez
    
$_SESSION["timeout"] = time();
    if(
$tiempoSession==20)
        {
            echo 
'<script language="javascript">    
            var timeoutId = setTimeout(function(){
                     alert("Su sesión será cerrada en 20 sg");
                    },2000);
                </script>
            '
;
        }
?>
la llamo desde un archivo sesion.php
... solo le coloco include_once('sesion1.php');
  #2 (permalink)  
Antiguo 26/02/2015, 13:50
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

es que... el script se ejecuta.. completo.. y no va contando...

pensa que php se ejecuta en el servidor.. una vez que arroja el resultado.. ya no se vuelve a ejecutar hasta que no refresques.

para tomar el tiempo deberias hacerlo en js. y para matar la session hacer una peticion ajax.
  #3 (permalink)  
Antiguo 26/02/2015, 14:09
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

hola,

como dice nuestro compañero para que funcione por el lado del servidor la persona tiene que ejecutar algún evento que haga dicha logica; para que sea de manera automatica tienes que usar javascript.

session.php
Código PHP:
Ver original
  1. if(!isset($_SESSION))
  2. {
  3.     $msg = array("session"=>0,"mensaje"=>"Su sesión ha caducado sera redireccionado en 20 seg");
  4. }
  5. else
  6. {
  7.      $msg = array("session"=>1,"mensaje"=>"Su sesión esta activa");
  8. }
  9.  
  10. echo json_encode($msg);

Código Javascript:
Ver original
  1. function session()
  2. {
  3. $.ajax({
  4.             type: "POST",
  5.             url: session.php,
  6.             data: {},
  7.             dataType:'json',
  8.             success: function(respuesta)
  9.             {
  10.                  if(respuesta.session == 0)
  11.                   {
  12.                           alert(respuesta.mensaje);
  13.                           clearInterval(validateSession);
  14.                   }
  15.             }
  16.         });
  17. }
  18.  
  19. var validateSession = setInterval(session,5000); //cada cinco segundos


simplemente es un bosquejo; en el archivo session.php implementas la logica que necesites dependiendo de la condicion.
  #4 (permalink)  
Antiguo 26/02/2015, 21:20
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

Hola informacionsys y marcusaurelio gracias por responderme, estuve adaptando el código a mi proyecto pero tengo un problema que siempre se actualiza la variable la variable de sesión timeout, este es el código que tengo:
sesion.php
Código PHP:
<?php
    $respuesta
=2;
    
$mensajeError="No se puede ejecutar la aplicación";
    
session_start();
    
// establecemos el tiempo de espera en segundos
    
$inactivo 60;
    if (isset(
$_SESSION["timeout"])) 
    {
        
$tiempoSession time() - $_SESSION["timeout"];
      if (
$tiempoSession>=$inactivo) {
            
// destruimos la sesión y desconectamos al usuario
            
session_destroy();
            
$respuesta=0;
            
$mensajeError="Su sessión será cerrada";
        }

    }
    
// el usuario interactúa por primera vez
    
$_SESSION["timeout"] = time();
    if(
$tiempoSession==20)
    {
        
$respuesta=1;
        
$mensaje="Su sesión será cerrada en 15 segundos";
    }

   
$salidaJson=array(
                
"respuesta"=>$respuesta,
                
"mensaje"=>$mensajeError
        
);

    echo 
json_encode($salidaJson);
?>
y en el sesion.js
Código:
$(document).ready(function(){

	
	var validateSession = setInterval(session,5000); //cada cinco segundos
function session()
	{
		$.ajax({
			cache: false,
			type: "POST",
            dataType:'json',
            url: './sesion.php',
            data: {},
            success: function(response) 
            {
                 if(response.respuesta == 0)
                  {
                          alert(response.mensaje); 
                           clearInterval(validateSession);
                  }else if(response.respuesta == 1){
                  	 alert(response.mensaje); 
                  }
            },
				error: function(){
					alert("Error General del Sistema, Intente Más Tarde");
				}
});
La variable de sesión timeout la defino cuando inicio sesión
Que debo de hacer para que funcione bien y me muestre los mensaje si se ha expirado la sesión del usuario o le falta 20 segundos para que se cierre la sesión?

También me gustaria saber como puedo hacer en el caso que el javascript este deshabilitado? ya q si esta deshabilitado pueda funcionar el de php, se puede?
  #5 (permalink)  
Antiguo 27/02/2015, 07:44
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

es por que.. siempre la estas definiendo.. $_SESSION["timeout"] = time();, deberias meter eso en un if... es decir que si no existe $_SESSION["timeout"] o la condicion que prefieras
  #6 (permalink)  
Antiguo 27/02/2015, 07:54
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

Cita:
Iniciado por marcusaurelio Ver Mensaje
es por que.. siempre la estas definiendo.. $_SESSION["timeout"] = time();, deberias meter eso en un if... es decir que si no existe $_SESSION["timeout"] o la condicion que prefieras
Hola marcusaurelio pero el problema que veo, es que si el usuario ingresa en otro módulo entonces nunca va actualizar ese tiempo y siempre será el del inicio.
  #7 (permalink)  
Antiguo 27/02/2015, 08:03
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

ahi es donde entra en juego tu creatividad.... segun yo lo veo.. deberias.. tenes.. dos instancias.. una que cree las variables y todo al cargar cada pagina.. y otra, el ajax que usas para matar la session en caso de inactividad.
  #8 (permalink)  
Antiguo 27/02/2015, 08:15
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

Ahh ok, no lo veia así pero ahora si te entiendo, eso lo haria cada vez que el usuario ingrese a un módulo inicializó las variables.

En el caso que un módulo sea de búsqueda por feha, usuario y esa parte se maneje con jquery para llenar tabla, tengo entendido que el tiempo de inactividad es si el usuario no hace moviendo pero en esa parte la página no se va a recargar, como se tendría que hacer en ese caso?
  #9 (permalink)  
Antiguo 27/02/2015, 08:45
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

el tiempo de inactividad lo estas definiendo vos.. en tu script.. y segun veo.. solo se renueva al recargar una pagina. si vos queres detectar como actividad.. por ejemplo.. un roolover sobre un link.. tenes que genera funciones que lo vallan haciendo..
  #10 (permalink)  
Antiguo 27/02/2015, 09:19
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

Cita:
Iniciado por marcusaurelio Ver Mensaje
el tiempo de inactividad lo estas definiendo vos.. en tu script.. y segun veo.. solo se renueva al recargar una pagina. si vos queres detectar como actividad.. por ejemplo.. un roolover sobre un link.. tenes que genera funciones que lo vallan haciendo..
Como se tendría que hacer? y en el caso que el usuario tenga el javascript deshabilitado como se podría hacer que funcione el php?

Última edición por plitre_sys19; 27/02/2015 a las 09:25
  #11 (permalink)  
Antiguo 27/02/2015, 10:08
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

com odijimos antes solo podria.. verificar la carga de cada script.. y no la actividad del lado del cliente... por lo cual seria.. redundante.. por que siempre.. en la carga crearias la session por lo cual no habria inactividad.

se me ocurre.. crear una variable de session.. con el time

cuando recargues ver si el time actual menos eso.. da el tiempo de inactividad.. y de ahi sacarlo. pero en variable de session no local.. porque esta se reinicia.. con cada recarga.. y la de session no.
  #12 (permalink)  
Antiguo 27/02/2015, 11:03
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

ok, gracias y en el caso que el cliente tenga el javascript deshabilitado como podria hacer que funcione solo la parte php?
  #13 (permalink)  
Antiguo 27/02/2015, 11:30
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

Cita:
ok, gracias y en el caso que el cliente tenga el javascript deshabilitado como podria hacer que funcione solo la parte php?
se me ocurre.. crear una variable de session.. con el time

cuando recargues ver si el time actual menos eso.. da el tiempo de inactividad.. y de ahi sacarlo. pero en variable de session no local.. porque esta se reinicia.. con cada recarga.. y la de session no.
  #14 (permalink)  
Antiguo 27/02/2015, 17:44
 
Fecha de Ingreso: septiembre-2011
Mensajes: 233
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

Cita:
Iniciado por marcusaurelio Ver Mensaje
cuando recargues ver si el time actual menos eso.. da el tiempo de inactividad.. y de ahi sacarlo. pero en variable de session no local.. porque esta se reinicia.. con cada recarga.. y la de session no.

Cuando te refiere a variables de session no local sería así: $_SESSION['usuario']?
  #15 (permalink)  
Antiguo 03/03/2015, 08:36
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Mostrar alerta cuando falte 20 segundo para cerrar la sesión

si si.. eso es una variable de session

Etiquetas: alerta, cerrar, segundo, sesión
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 11:37.