1

PHPまたはプロセスメーカー(BPM)でセッションタイムアウトを行う方法は?

ほとんどのフォーラムとウィキを参照しましたが、問題は解決しませんでした。

私にお知らせください。

4

4 に答える 4

1

ユーザーが最後にリクエストを行った時刻を保存します

<?php
  $_SESSION['timeout'] = time();
?>

後続のリクエストで、前回のリクエストからどれくらい前に作成したかを確認します (この例では 10 分)

<?php
  if ($_SESSION['timeout'] + 10 * 60 < time()) {
     // session timed out
  } else {
     // session ok
  }
?>

ここから抜粋

于 2013-02-08T07:46:07.100 に答える
1

これは以前の投稿でよく説明されています。以下のリンクを参照してくださいPHP セッションのタイムアウト

PHP セッションを 30 分後に期限切れにするにはどうすればよいですか?

于 2013-02-08T07:47:01.003 に答える
0

次のコードを 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 にスキップしてタイムアウト変数を更新します。

于 2013-02-08T08:01:02.137 に答える