Проверьте, существует ли сеанс PHP или истек ли он с помощью AJAX - PullRequest
5 голосов
/ 08 апреля 2011
  1. Как установить время сеанса php, я пытаюсь, как показано ниже, но я не думаю, что это работает

    ini_set("session.gc_maxlifetime", 600);

  2. Как узнать, существует ли php-сессия или срок ее действия истек, используя ajax (javascript)?

Привет

Ответы [ 2 ]

8 голосов
/ 08 апреля 2011

Для № 1 используйте session_set_cookie_params().Срок действия истекает через 600 секунд

session_set_cookie_params(600)

(обратите внимание, что в отличие от обычной функции setcookie session_set_cookie_params использует секунды, которые вы хотите прожить, она не должна быть time() + 600, что является обычной ошибкой)

Для номера 2 просто сделайте небольшой скрипт, вызываемый через AJAX:

<?php
session_start()

if( empty($_SESSION['active']) ) {
     print "Expired"
}
else {
     print "Active"
}

?>

На стороне Javascript (используя JQuery)

$.get('path/to/session_check.php', function(data) {
     if( data == "Expired" ) {
         alert("Session expired");
     } else if (data == "Active" ) {
         alert("Session active");
     }
 });
2 голосов
/ 07 марта 2014

Что Мастер теней прокомментировал, как поддерживать сеанс каждый раз, когда вы делаете, проверка верна.

Но решение довольно простое.Хитрость заключается в том, чтобы выполнить запрос AJAX с интервалом, превышающим время жизни сеанса.Поэтому, если вы устанавливаете тайм-аут сеанса в 15 минут, вы можете проверять через AJAX каждые 16 или более.

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

Надеюсь, это поможет вам или любому, кто ищет то же самое!

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