Stack Overflow en español Asked by IndiraRivas on November 27, 2021
He estado investigando acerca del cierre de sesiones por inactividad en mi página, lo he logrado con el siguiente código en mi página principal (index.php):
script
<script>
function idleLogout() {
var t;
window.onload = resetTimer;
window.onmousemove = resetTimer;
window.onmousedown = resetTimer; // catches touchscreen presses
window.onclick = resetTimer; // catches touchpad clicks
window.onscroll = resetTimer; // catches scrolling with arrow keys
window.onkeypress = resetTimer;
function logout() {
window.location.href = 'logout.php';
}
function resetTimer() {
clearTimeout(t);
t = setTimeout(logout,140000); // time is in milliseconds
}
}
idleLogout();
</script>
y paso la función en body a index.php
<body onunload="idleLogout()">
logout.php (destruyo la sesión)
<?php
session_start();
session_destroy();
header( "Location:session_expire.php" );
?>
Pero mi index.php tiene funcionalidades que se abren en VENTANAS NUEVAS, entonces, cuando dejo de interactuar en index.html porque estoy en esas VENTANAS, ¿qué hacer para que este tiempo de sesión se resetee? ya que se cierra mi sesión.
Lo que podrías hacer, es, cuando pase cierto tiempo, chequear si la ventana del navegador (tu index.php
en este caso) está o no activa; sería algo asi
var window_focus;
$(window).focus(function() {
//Retorna true si index.php está en foco
window_focus = true;
})
.blur(function() {
//false en caso contrario
window_focus = false;
});
Podrías chequearlo de la siguiente manera;
var window_focus;
$(window).focus(function() {
window_focus = true;
})
.blur(function() {
window_focus = false;
});
$(document).one('click',function() {
setInterval(function() { console.log('en foco? ' + window_focus); }, 1000);
});
Click para empezar<br>
<script src="https://code.jquery.com/jquery-3.3.1.slim.js"
integrity="sha256-fNXJFIlca05BIO2Y5zh1xrShK3ME+/lYZ0j+ChxX2DA="
crossorigin="anonymous"></script>
Base la respuesta en un la de user113716 en StackOverflow en Inglés
Saludos!
Answered by Juan Salvador Portugal on November 27, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP