2016-08-30 5 views
1

セッションを破棄するために特定の時間を設定するにはどうすればよいですか?誰も私に10分後にセッションを破壊する正しい方法を示すことができますか?ここに私のコードです:特定の時間のphpでのセッションタイムアウト

セッション認証:

session_start(); 
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) { 
    header("location: index.php"); 
    exit(); 
} 

セッションのログアウト:

session_start(); 
unset($_SESSION['SESS_MEMBER_ID']); 
unset($_SESSION['SESS_FIRST_NAME']); 
unset($_SESSION['SESS_LAST_NAME']); 
header("location: index.php"); 

セッションログイン:

if($result) { 
    if(mysql_num_rows($result) == 1) { 
     //Login Successful 
     session_regenerate_id(); 
     $member = mysql_fetch_assoc($result); 
     $_SESSION['SESS_MEMBER_ID'] = $member['id']; 
     $_SESSION['SESS_USER_ID'] = $member['username']; 
     $_SESSION['SESS_FIRST_NAME'] = $member['first_name']; 
     $_SESSION['SESS_LAST_NAME'] = $member['last_name']; 
     $_SESSION['SESS_USER_TYPE'] = $member['acc_type']; 
     session_write_close(); 
     header("location: user_profile.php"); 
     exit(); 
    } else { 
     header("location: loginerr.php"); 
     exit(); 
    } 
} else { 
    die("Query failed"); 
} 
+0

10分後にajax関数を呼び出すフロントエンドでは、ajaxによって呼び出されるバックエンドスクリプトによってsession_destroy()が呼び出されます。 –

+0

10分間の休止またはわずか10分間ですか? _automatically_をログアウトすることはできませんが、10分後にアクセスを試みるとログアウトすることができます。 – AbraCadaver

+0

10分間の非活動。 – Varma

答えて

1

することはできません、あなたがない限りあなた自身のロール訴訟処理システム。デフォルトのセッションクリーンアップシステムはランダムに実行されます。 session_start()を呼び出すPHPスクリプトを呼び出すたびに、ガベージコレクタがトリガされます。

GCが起動すると、基本的にセッション保存ディレクトリをロールし、既定の有効期限を超えてアクセスされていないファイルを検索し、「古い」ものを削除します。

セッションが使用されている場合(例:session_start()が呼び出され、特定のセッションファイルがロードされた場合)、セッションは古くなることはなく、削除されません。

削除をスケジュールするには、外部システムが必要です(例: atスケジューラを使用します。

+0

私は説明を待つでしょう。 10分後、または10分後にアクセス試行でログアウトすることができます。 10分で_automatically_しないでください。 – AbraCadaver

+0

誰かが10分間活動していない場合、セッションを破壊したいと思います。 – Varma

+0

セッションタイムアウトを10分に設定し、GCが起動するたびに、10分を超えるセッションファイルを自動的に切断します。 –

関連する問題