Предупреждать пользователя, если сеанс истекает, возможность возобновления сеанса

Я искал весь день для PHP или JavaScript-решения для этого.

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

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

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

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

Это относительно легко:

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

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

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

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

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

  • длинный телефонный звонок
  • неожиданный визит
  • встреча

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

Вместо:

 var refresh_session = function () { $.get("/refresh_session.php"); }, fifteen_minutes = 15 * 60 * 1000; setInterval(refresh_session, fifteen_minutes); 

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

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

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

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