2016-02-14 4 views
5

В попытке справиться с истекающий PHP сессий более изящно, я вставил следующий в моем PHP код:Всплывающее всплывающее окно Javascript расширяет сеанс PHP?

$sessionLifeTimeInSeconds = ini_get ("session.gc_maxlifetime"); 
echo '<script type="text/javascript">' . "\n" . 
    ' setTimeout (function() {' . "\n" . 
    ' alert ("Your login session will expire in 3 minutes.");' . 
    "\n" . 
    ' }, ' . ($sessionLifeTimeInSeconds - 180) * 1000 . ');' . "\n" . 
    '</script>' . "\n\n"; 

, который работает. Однако теперь я замечаю, что после нажатия кнопки «ОК» в предупреждении javascript и никакой дополнительной активности сеанс не истекает, когда достигнут тайм-аут (по умолчанию 24 минуты в этом случае).

Должно ли всплывающее окно предупреждения продлевать сеанс? Если да, можно ли этого избежать, и если да, то как?

Я использую Firefox 44.0 на Ubuntu Linux, если это вообще актуально.

+0

Всплывающие не должен распространяться продолжительностью сеанса PHP в любом случае, но, возможно, есть больше кода (который вы должны предоставить нам), насколько это возможно. –

+0

Нет, нет. Это единственное изменение в PHP-коде. Перед вставкой этих простых сессий фрагментов Javascript истекли через 24 минуты (по умолчанию PHP), и теперь они этого не делают. Никаких других изменений в коде не было сделано, и не было никаких других взаимодействий или запросов клиента/сервера. Отсюда вопрос, потому что я не думал, что это должно произойти. –

+0

Всплывающее окно оповещения - клиентская сторона. На сервер не поступает запрос. Таким образом, сеанс php не расширяется. Вы должны перезагрузить сайт, когда хотите это сделать. – Fuzzyma

ответ

0

Всплывающее окно не расширяет сеанс, так как сеанс удерживается сервером в течение 24 минут и распространяется только в том случае, если есть взаимодействие с сервером.

Попробуйте сделать запрос на сервер с помощью JavaScript в вашем яваскрипте функции для расширения PHP сессии, например, AJAX вызова к корню:

$sessionLifeTimeInSeconds = ini_get ("session.gc_maxlifetime"); 
echo '<script type="text/javascript">' . "\n" . 
    ' setTimeout (function() {' . "\n" . 
    ' alert ("Your login session will expire in 3 minutes.");' . 
    ' xhttp.open("GET", "/", true);' . 
    ' xhttp.send()' . 
    "\n" . 
    ' }, ' . ($sessionLifeTimeInSeconds - 180) * 1000 . ');' . "\n" . 
    '</script>' . "\n\n"; 
Смежные вопросы