Предупреждать пользователя, если сеанс истекает, возможность возобновления сеанса
Я искал весь день для PHP или JavaScript-решения для этого.
Я хотел бы предупредить пользователя о том, что их сеанс близок к тайм-ауту (всплывающее окно), возможность продлить время сеанса.
Вот визуальный, если вам нужен он на этой странице
РЕДАКТИРОВАТЬ:
jQuery является основой, если это помогает
3 Solutions collect form web for “Предупреждать пользователя, если сеанс истекает, возможность возобновления сеанса”
Это относительно легко:
-
Создайте таймер 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, оно обновляет ваш сеанс, поэтому теоретически сеансы пользователя не заканчиваются до тех пор, пока они остаются на вашем сайте.