2016-02-14 17 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アラートの 'OK'ボタンをクリックした後、それ以上のアクティビティがないことに気づき、タイムアウト(この場合はデフォルトの24分)に達したときにセッションは期限切れになりません。

警告ポップアップボックスでセッションを延長する必要がありますか?もしそうなら、これは避けることができますか?

私は、Ubuntu LinuxでFirefox 44.0を使用しています(これはまったく関係ありません)。

+0

ポップアップがどのような方法でPHPのセッション期間を延長するべきではありません、しかし、多分それはあなたが私達に提供するべきであるより多くのコードです。 –

+0

いいえ、ありません。これはPHPコードの唯一の変更です。このシンプルなJavascriptスニペットを挿入する前に、セッションは24分後に期限切れになりました(PHPのデフォルト)。コードに対する他の変更は行われておらず、他の対話やクライアント/サーバー要求も行われていません。したがって、私はこれが起こるべきではないと思ったので、疑問です。 –

+0

アラートポップアップはクライアント側です。サーバーへの要求はありません。したがって、PHPセッションは拡張されません。あなたはそれを達成するためにサイトをリロードする必要があります。 – Fuzzyma

答えて

0

セッションはサーバーによって24分間保持され、サーバーとの対話がある場合にのみ拡張されるため、ポップアップボックスはセッションを拡張しません。

はルートに例えばAJAXコール、PHPのセッションを拡張するために、あなたのjavascript関数ではJavaScriptを介してサーバの呼び出しを行うようにしてください:

$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"; 
関連する問題