Foros del Web » Programando para Internet » PHP »

Reedireccion y cierre de sesion por inactividad

Estas en el tema de Reedireccion y cierre de sesion por inactividad en el foro de PHP en Foros del Web. Buenos días, Estoy armando un script que me cierra la sesion si hay 2 minutos de inatividad. Pero deseo que cuando pasen los dos minutos ...
  #1 (permalink)  
Antiguo 17/07/2013, 09:18
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 3 meses
Puntos: 0
Reedireccion y cierre de sesion por inactividad

Buenos días,

Estoy armando un script que me cierra la sesion si hay 2 minutos de inatividad. Pero deseo que cuando pasen los dos minutos de inactividad, automaticamente me envie a la pagina logout.php que hace el cierre de sesión.

Voy con este codigo, pero seguro hay que mejorarlo para que haga el reedirecionamiento automatico cuando pasen los 2 minutos de inactividad.

Código PHP:
// CIERRE DE SESIONES POR INACTIVIDAD  
     
    
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");   
     
    if(isset(
$_SESSION['usuario'])){   
    
$fechaGuardada $_SESSION['ultimoAcceso'];    
    
$ahora date("Y-n-j H:i:s");    
    
$tiempoTranscurrido = (strtotime($ahora)-strtotime($fechaGuardada);   
    if(
$tiempo_transcurrido >= 2000) {   
        
session_destroy();   
      
header("Location: logout.php");   
    }  
    else {   
        
$_SESSION['ultimoAcceso'] = $ahora;    
    }   
    }   
     
// FIN CIERRE DE SESIONES POR INACTIVIDAD 
  #2 (permalink)  
Antiguo 17/07/2013, 09:24
 
Fecha de Ingreso: marzo-2013
Mensajes: 8
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Reedireccion y cierre de sesion por inactividad

Buenas, podrias ponerle un cronometro que corra al momento de cargarse la pagina y que se reinicie en cuanto no se detecte actividad, y cuando llegue el tiempo que deseas, le redireccionas a logout.php
  #3 (permalink)  
Antiguo 17/07/2013, 09:29
 
Fecha de Ingreso: enero-2012
Mensajes: 109
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Reedireccion y cierre de sesion por inactividad

Gracias por responder, y tienes idea de como hacer el codigo para que haga eso?

Saludos
  #4 (permalink)  
Antiguo 17/07/2013, 09:56
 
Fecha de Ingreso: marzo-2013
Mensajes: 8
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Reedireccion y cierre de sesion por inactividad

Hay varias formas, podrias utilizar por ej. javascript (en mi caso lo utilizaria)
Código HTML:
<script language="javascript" type="text/javascript">

 var CronoID = null
var CronoEjecutandose = false
var decimas, segundos, minutos

function DetenerCrono (){
   	if(CronoEjecutandose)
   		clearTimeout(CronoID)
   	CronoEjecutandose = false
}

function InicializarCrono () {
	//inicializa contadores globales
	decimas = 0
	segundos = 0
	minutos = 0
	
}

function MostrarCrono () {
	       
   	//incrementa el crono
   	decimas++
	if ( decimas > 9 ) {
		decimas = 0
		segundos++
		if ( segundos > 59 ) {
			segundos = 0
			minutos++
			if ( minutos > 99 ) {
				alert('Fin de la cuenta')
				DetenerCrono()
				return true
			}
		}
	}

	//configura la salida
	var ValorCrono = ""
	ValorCrono = (minutos < 10) ? "0" + minutos : minutos
	ValorCrono += (segundos < 10) ? ":0" + segundos : ":" + segundos
	ValorCrono += ":" + decimas	
			
  	document.crono.display.value = ValorCrono

  	CronoID = setTimeout("MostrarCrono()", 100)
	CronoEjecutandose = true
	return true
}

function IniciarCrono () {
 	DetenerCrono()
 	InicializarCrono()
	MostrarCrono()
}

function ObtenerParcial() {
	//obtiene cuenta parcial
	document.crono.parcial.value = document.crono.display.value
}




</script> 
Podrias utilizar este codigo como base y modificar en la funcion MostrarCrono() para que se redireccione una vez lleguen los 2 minutos. Para lo de la inactividad deberias usar cookies, podrias crear o modificar una cookie cada vez que el usuario hace alguna operacion en la pagina, alli reiniciarias el cronometro y una vez que el mismo detecte que pasaron 2 minutos o su equivalente en segundos, redireccionas utilizando
Código:
location.href = "logout.php";

Etiquetas: cierre, inactividad
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 19:00.