为了更优雅地处理过期的PHP会话,我在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分钟)时,会话不会过期。
警告弹出框是否应该延长会话?如果是这样,可以避免这种情况,如果是这样,怎么办?
我在Ubuntu Linux上使用Firefox 44.0,如果这完全相关的话。
答案 0 :(得分:0)
弹出框不会扩展会话,因为会话由服务器保留24分钟,并且只有在与服务器进行交互时才会扩展。
尝试在javascript函数中通过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";