Оповещение пользователя, если сессия истекает, возможность возобновить сессию - PullRequest
6 голосов
/ 04 октября 2010

Я весь день искал решение для PHP или JavaScript, чтобы сделать это.

Я хотел бы предупредить пользователя, что его сеанс заканчивается (всплывающее окно), возможность продлить время сеанса.

Вот изображение, если оно вам нужно на этой странице

РЕДАКТИРОВАТЬ:

jQuery является основой, если это помогает

Ответы [ 3 ]

4 голосов
/ 04 октября 2010

Это относительно просто:

  • Создать таймер JavaScript, который запускается (время сеанса - 5 минут) минут, используя setTimeout

  • Пусть функция setTimeout отобразит диалоговое окно подтверждения, например, с помощью JQuery UI Dialog

  • Если пользователь хочет продлить сеанс,Ajax-запрос к файлу PHP.Если файл использует сеансы, это сработает, чтобы «коснуться» времени жизни сеанса

  • После выполнения запроса установите другое значение setTimeout, которое будет срабатывать, когда время сеанса скоро истечет.

3 голосов
/ 04 октября 2010

Я бы предложил другой подход;просто обновите сеанс для пользователя в любом случае.Большинство нежелательных сеансовых смертей происходят из-за

  • длительного телефонного звонка
  • неожиданного визита
  • собрания

и с подтверждениемдиалоговое окно, сеанс будет уже мертв к тому времени, когда ваш пользователь вернется - добавив только путаницу.

Вместо:

var refresh_session = function () {
    $.get("/refresh_session.php");
},

fifteen_minutes = 15 * 60 * 1000;

setInterval(refresh_session, fifteen_minutes);

-> счастливые пользователи!: -)

0 голосов
/ 04 октября 2010

Вы можете обойти проблему, имея скрипт, который возвращает изображение размером 1x1 пиксель по таймеру JS.Идея состоит в том, что вы начинаете с PHP-скрипта, подобного этому (не уверен, что вызовы заголовка здесь абсолютно правильны ...):

header("ContentType: image/gif");
passthru("my-1x1.gif");

Теперь пусть функция javascript setInterval вызывает этот скриптподходящий интервал (т. е. меньше, чем интервал GC сеанса).Поскольку изображение подается из PHP, оно обновляет ваш сеанс, поэтому теоретически сеансы вашего пользователя не будут заканчиваться, пока они остаются на вашем сайте.

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