PHPまたはプロセスメーカー(BPM)でセッションタイムアウトを行う方法は?
ほとんどのフォーラムとウィキを参照しましたが、問題は解決しませんでした。
私にお知らせください。
ユーザーが最後にリクエストを行った時刻を保存します
<?php
$_SESSION['timeout'] = time();
?>
後続のリクエストで、前回のリクエストからどれくらい前に作成したかを確認します (この例では 10 分)
<?php
if ($_SESSION['timeout'] + 10 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
ここから抜粋
次のコードを php スクリプトの先頭に含めます。
<?php
if(!isset($_SESSION)){@session_start();}
if (isset($_SESSION['timeout']) and $_SESSION['timeout'] + 1800 < time()) {
session_unset();
session_destroy();
} else {
$_SESSION['timeout'] = time();
}
?>
最初の行は、セッションがあるかどうかを確認し、セッションがない場合はセッションを作成します。
session_start() の前の @ 記号は、session_start() がスローする可能性のある警告または通知を抑制するためのものです。このコードにとって重要なことは何もないので、削除できます。
次の行は、$_SESSION['timeout'] 変数が存在するかどうか、および現在の時刻から 30 分以上前の値が含まれているかどうかをチェックします。
スクリプトを初めて実行するときは存在しないため、存在しないときにその値を確認すると、php.ini ファイルで有効になっている場合は通知または警告メッセージが表示されます。
存在しない場合は、else にスキップして作成し、現在の time() を追加します。
現在、1800 の値は 30 分 (秒) です。30 * 60 は、読みやすくするためにこれを記述するもう 1 つの一般的な方法です。
if が true の場合、ユーザーは 30 分以上非アクティブです。30 分未満の場合、またはスクリプトを初めて実行する場合は、else にスキップしてタイムアウト変数を更新します。