페이지가 1800 초 동안 새로 고쳐지지 않으면 대화 상자를 표시하는 작은 jQuery 코드를 작성했습니다. 대화 상자에는 세션이 자동으로 끝나기 전에 카운트 다운이 있습니다. 사용자가 "예, 계속 작업"을 클릭하면 카운터가 재설정되고 대화 상자가 사라집니다. 그렇지 않으면 사용자가 로그 아웃 페이지로 이동됩니다.ajax 요청을 사용하여 setTimeout() 카운터를 변경하는 방법은 무엇입니까?
사용자가 새 브라우저 탭을 열고 새 탭에서 계속 작업 할 때의 문제입니다. 그런 다음 이전 탭은 "새로 고침이없는 1800 초 후"유휴 상태가되어 세션을 모두 풀어 로그 아웃합니다.
$_SESSION
정보를 사용하여 데이터베이스에서 시간을 확인하여 남은 시간을 반환하는 PHP 페이지를 만들었습니다. 그러나 대화 상자가 열릴 때의 카운터를 어떻게 재설정 할 수 있는지 잘 모르겠습니다.
대화 상자가 표시되기 전에 남은 실제 시간을 확인하기 위해 코드를 어떻게 수정할 수 있는지 잘 모르겠습니다.
여기에 유 secondes의 수는
자바 스크립트는 PHP 페이지에 아약스 요청을 시작할 필요가 왼쪽 반환해야 내 코드를 통해 UR 스크립트 PHP에서
<!-- This script will alert a user before forcing to logout -->
<script type="text/javascript">
var timer;
var closeDialogAfter = 180; //The default counter value
var idleTimeOutLimit = 1800 - closeDialogAfter; //Display the dialog after @idleTimeOutLimit seconds of idle time
var signOutScript = '/index.php?action=logout'; //logout url
var keepAliveScript = '/ajax/handler-keep-me-alive.php'; //php page to handle ajax request to keep the session alive
var dialogCountdown = '#dialog-countdown'; // the lable that is used to display the counter
var idleTimeout= '#idleTimeout'; //the div that is used for the dialog
$(function(){
//start the idle time out counter
startTimeoutCounter();
$(idleTimeout).dialog({
resizable: false,
autoOpen: false,
width: 400,
open: function(){
updateTimeoutCounter();
},
buttons: {
"Yes, Keep working": function(e) {
$.ajax({
url: keepAliveScript,
success: function(data) {
startTimeoutCounter();
$(idleTimeout).dialog("close");
}
});
},
"No, End Session": function(e){
forceLogOut();
$(this).dialog('close');
}
}
});
});
function startTimeoutCounter(){
timer = closeDialogAfter;
$(dialogCountdown).text(timer);
setTimeout(function(){
$(idleTimeout).dialog("open");
}, idleTimeOutLimit * 1000);
}
function updateTimeoutCounter(){
if( $(idleTimeout).dialog("isOpen")){
setTimeout(function(){
timer = timer -1;
$(dialogCountdown).text(timer);
(timer < 2) ? forceLogOut() : updateTimeoutCounter();
}, 1000);
} else
$(dialogCountdown).text(closeDialogAfter)
}
function forceLogOut(){
window.location = signOutScript;
}
</script>
localstorage를 사용하여 탭에서 남은 시간을 설정해보십시오. – juvian
@juvian 로컬 저장소는 어떻게 사용합니까? – Jaylen
탭이란 무엇을 의미합니까? –