2017-04-04 9 views
0

現在ログインしているユーザーの一覧を含むMySQLテーブルを実装しようとしています。これはこれを実装するための現在のロジックとコードです。私は現在直面しています問題は、しかし、もしということです

//Remove user from logged_in table. 
$userId = $_SESSION['userId']; 
$logoutQry = mysqli_query($dbc, "DELETE FROM logged_in WHERE user_id = '$userId'"); 

//Clear all of the saved session variables. 
session_destroy(); 

:次のコードを実行し、ログアウトボタンをクリックすると

//Add the user_id to the logged_in table 
$loggedInQry = mysqli_query($dbc, "INSERT INTO logged_in (user_id) VALUES ('$userId')"); 

:ログインで

は、次のコードを実行しますデフォルトの24分後にセッションがタイムアウトすると、$_SESSION['userId']変数の設定が解除されるため、ユーザーは自動的にログアウトされますが、user_idはlogged_inテーブルから削除されません。

$_SESSIONタイムアウトで機能を実行できる方法はありますか?理想的には、現在のlogged_inテーブルに残っているので、セッションタイムアウト時にlogged_inテーブルから現在の$_SESSION['userId']を削除したいと考えています。

+0

期限切れになぜセッションの人生の時間を与えていないと、ユーザーがに要求した場合にのみ、それを終了します。

これは、あなたが正しい方向に軌道に乗るだろうか? –

+0

また、ログアウトリクエストを検証することも重要です。ユーザーからの有効なリクエストです。 –

答えて

0

タイムアウト時に同じ削除クエリを実行できるように、独自のセッションタイムアウトメカニズムを実装する必要があります。 https://solutionfactor.net/blog/2014/02/08/implementing-session-timeout-with-php/

+0

あなたの答えは、そのリンクの重要な部分を取って回答の一部として投稿し、リンクを参照したり、現在そのリンクが変更/削除された場合、あなたの回答は値を失います –

0

自動セッション

<?php 
session_start(); 
$idletime=30;//after 60 seconds the user gets logged out 
if (time()-$_SESSION['timestamp']>$idletime){ 
session_destroy(); 
}else{ 
$_SESSION['timestamp']=time(); 
} 

$_SESSION['timestamp']=time(); 
+0

60秒は1分です –

関連する問題