ですから、phpアプリケーションに次の機能を作成します。
私は2つの可能な解決策を考え出しましたが、それらに満足していません。
ほとんどすべてにJavaScriptを使用します。
この解決策は非常に悪いと思います。 JavaScriptコードを操作して変更する方法があると思います(たとえば、logout.phpへのリダイレクトを防ぐため)。つまり、サーバーで実行する必要があるプロセスを実行しています。
上記で説明したプロセスは良い解決策ではないと思います。具体的には、サーバー側の処理を行うためのJavaScriptの多用。私の問題は、phpを使用してキーボード/マウスの動きを検出する方法が見つからないことです。これを行う方法に関して私が見つけたものはすべて、JavaScriptを使用することです(当然、ユーザーのアクションはサーバーではなくブラウザで行われるため)。
どうすればいいですか?最良かつ最も安全なソリューションは何でしょうか?
2番目のソリューションは、最良のソリューションです。これは、サーバーがアクティブであることをサーバーに通知するのは基本的にクライアントの責任であるべきだからです。その後、サーバーは必要に応じてそこから実行できます。
これにより、サーバーは何が起きるかをすべて制御できます。クライアントが持つ唯一の制御は、ユーザーがまだアクティブかどうかを指定することです。これは適切なクライアント/サーバー関係です。
唯一の解決策としてJavaScriptに依存しないでください。 PHPは、ページの更新を処理するJavaScriptクラスでセッションの有効期限を追跡する必要があります。JSからの更新がない場合、PHP次のリクエストで自動的に。コンピューターのスリープ、ネットワークの切断、ブラウザーでJavaScriptが無効になっているまれなケースなど、JSがページを更新しない理由はたくさんあります。
AJAXの呼び出しは、キープアライブリクエストのようなものにすぎず、応答はOKまたは「どのセッション?」のいずれかになります。
ソリューション#1の場合、ユーザーのすべてのアクションに対してサーバーにpingを送信するのではなく、そのルートをたどると、アクティビティをまとめて3〜5分おきにのみpingを送信します(最後の3〜 5分)。
選択する解決策が何であれ、ユーザーが複数のブラウザウィンドウ/タブを開いている可能性があるという事実を処理することと、あるウィンドウからAJAXがセッションをクリアしないようにする必要があります。そのウィンドウでのアクティビティはありません。