оповещение, когда срок годности готовки ie истекает jquery - PullRequest
0 голосов
/ 28 марта 2020

Используя куки, я пытаюсь просто показать предупреждающее сообщение и мигающее сообщение о состоянии, которое готовит ie истекает как обратный отсчет, давая им 60 секунд, чтобы щелкнуть, продлить его, если они не нажимают на ссылку , он перейдет к ссылке href для истечения срока действия. и истекает срок действия повара ie.

<script>
//the function IdleToLong will be called after 30seconds. 
//This means if the page reloads, it starts over.
setTimeout(IdleToLong, 30 * 1000); // 30 seconds

function IdleToLong() {
  alert('Move your ass');

  //If you also need to logout in PHP then you must notify the server that a user has been idle to long.
  $.get('logout.php?reason=idle').complete(function() { 
     window.location.href = '/';
  });
}
</script>

вышеуказанный код работает, но он не отображает сообщение, например, обратный отсчет от 60 до 0, в этом предупреждении, если они нажимают, тратят, расширяют cookk ie, иначе выходят из системы, но это предупреждение должно появляться только через каждые 3 часа, потому что я устанавливаю его на 3 часа и продляю на 3 часа

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Когда пользователь заходит на ваш сайт и вы устанавливаете повара ie, вы должны установить второго повара ie, содержащего дату истечения срока годности первого повара ie. Затем, используя JavaScript, вы можете вычесть значение даты истечения срока из текущего времени, чтобы получить значение setTimeout.

PHP:

$cookie_max_age = [number of seconds];
$cookie_expires = time()+$cookie_max_age;
$cookie_value = rawurlencode("[cookie value]");
header("set-cookie: [cookie name]=$cookie_value; max-age=$cookie_max_age", false);
header("set-cookie: expires=$cookie_expires; max-age=$cookie_max_age", false);

JavaScript:

var expires = parseInt(('; '+document.cookie).split('; expires=')[1]);
var interval = setInterval(function() {
    var milliseconds_left = (new Date()).getTime()-expires*1000;
    if (milliseconds_left<=0) {
        clearInterval(interval);
        $.get('logout.php?reason=idle').complete(function() { 
            window.location.href = '/';
        });
    }
    else if (milliseconds_left<=60000) {
        var messageBox = document.getElementById('messageBox');
        messageBox.innerHTML = "Your session will expire in "+(milliseconds_left/1000)+" seconds.";
    }
}, 1000);

Обратный отсчет - это другая проблема. Вы, вероятно, хотите создать лайтбокс с кнопкой расширения.

0 голосов
/ 28 марта 2020

Это не так просто, JavaScript не может получить время истечения Cook ie в document.cookie API или в Response объекте в случае fetch или XMLHttpRequest. Таким образом, вы должны будете предоставить токен из бэкэнда в читаемом заголовке (или в теле). Тогда вы сможете с помощью простого логика c кодировать обратный отсчет в JavaScript.

Чтобы привести более конкретные примеры, этот заголовок не может быть получен в JavaScript:

Set-Cookie: test=value; Path=/; Expires=Sat, 28 Mar 2020 12:48:58 GMT;

После того, как этот заголовок получен в ответе HTTP, повар ie может быть получен с document.cookie, но без даты истечения срока действия.

С другой стороны, этот заголовок можно получить:

X-Whatever-Name-You-Want: test=value; Path=/; Expires=Sat, 28 Mar 2020 12:48:58 GMT;

Таким образом, вы можете предоставить Cook ie в пользовательском заголовке, чтобы получить его с JavaScript с датой истечения срока действия .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...