0

セッション追跡を維持する PHP アプリケーションを使用しています。ブラウザを閉じるまで、アプリケーションでユーザーセッションを維持したい。ブラウザが閉じられるまで、セッションは期限切れになりません。私は Java 開発者で、PHP の初心者です。

ブラウザを閉じる前にセッションがタイムアウトしてはなりません。とにかくブラウザを閉じると、セッションはしばらくしてからタイムアウトします。

4

2 に答える 2

1

Javascript を使用して、ページまたはブラウザー ウィンドウが閉じられたことを検出することができます。ただし、これに依存するべきではありません。なぜなら、通知が発生することなくユーザーがサイトの閲覧を停止する方法はたくさんあるからです (ブラウザーのクラッシュ、ネットワークまたは停電など)。

標準的な答えは、この種のことを気にしないことです.PHPセッションにはタイムアウトメカニズムがあります. ユーザーが特定の時間内にページを読み込まない場合、セッションは削除されます。これは標準であり、気にする必要はありません。ユーザーがサイトをどのように使用すると予想されるかに応じて、タイムアウト期間を調整することだけをお勧めします。

本当にユーザーを監視し、ユーザーがまだサイトにアクティブであることを確認し、ユーザーが停止したらすぐにセッションを終了したい場合は、単純な Ajax ping を記述して、ページが送信するようにすることをお勧めします。数分ごと (または任意の間隔) にサーバーへの要求。

これにより、セッション タイムアウトがかなり短くても、ブラウザが ping の送信を停止するまで (ブラウザ ウィンドウが閉じられたことが原因である可能性がありますが、ブラウザがクラッシュしたり、ネットワーク接続がダウンしたり、ユーザーが電源プラグなど)。

これの欠点は、サーバーへの余分なトラフィックが大量に発生することです (そして、かなりの余分な作業が発生します)。単純にセッションをタイムアウトさせるだけでは、実際のメリットはありません。

于 2013-01-04T15:52:19.117 に答える
0

この質問は少し古いことは知っていますが、それでも関連性があるため、次のようにします。

function keepMeAlive() {
    var img = new Image();
    img.src = YOUR_URL + 'images/empty.gif?' + new Date().getTime();
}
window.setInterval(keepMeAlive, 600000);

ここで、1x1 ピクセルの gif 画像を作成し、指定された URL にアップロードします。上記のコードは 10 分ごとに 1 回ロードするため、セッションが維持されます。

于 2015-02-22T00:41:19.657 に答える