現在、PHP Web アプリケーションからのタイムアウトを次のように処理しています。
- 現在、各ページには PHP のタイムアウト チェックがあり、ユーザーが最後にロードしたページに対して現在の時刻をチェックします。両者の差が 15 分を超えると、ユーザーのセッションが破棄され、新しいセッションが作成され、現在のページの場所がセッションに配置され、ユーザーはログイン ページにリダイレクトされます。
- 各ページ ヘッドには、
<meta>
15 分 5 秒後にページを更新するタグがあります (したがって、タイムアウト チェックを「呼び出します」)。
現在、ユーザーがページで長時間作業している場合など、ユーザーの制御を強化することを検討しており、タイムアウトの約 2 分前にポップアップを表示できるようにすることを検討しています。ポップアップには、セッションを続行する (セッションの最後のアクティビティを更新するために AJAX 呼び出しを行う) か、ログアウトするオプションがあります。ポップアップが無視された場合 (たとえば、ユーザーが別のページにいる場合)、ユーザーはログアウトされます。
Using Javascript to override or disable meta refresh tagによると、タグをリセットすることはできません<meta>
。つまり、タグを削除する必要がある可能性があります。PHP/Javascript Session Timeout with warningの唯一の回答は、ログイン ページへの JavaScript 呼び出しリダイレクトを使用することを提案していますが、これは JavaScript を無効にすることで回避できます。
私が考えているのは、ユーザーが JavaScript を使用していなくてもタイムアウトになるように、(HTML5 を使用しているので許容できる)<meta>
リダイレクト タグを囲むことです。<noscript>
これにより<meta>
、ユーザーがセッションを継続するかどうかに関係なく、タグがトリガーされなくなります。
このアプローチは理にかなっていますか?何か不足していますか?もっと理にかなっている別のアプローチはありますか?
私の現在のコード
<?php
require_once("include/session.php");
require_once("include/sessioncheck.php");
?>
<html>
<head>
<meta http-equiv="refresh" content="<?= TIMEOUT_MIN * 60 ?>" />
<!-- additional tags -->
</head>
<body>
<!-- content -->
</body>
</html>