2017-01-03 10 views
0

初めてのポスターです。昨日、この問題を解決しようとしていた私の仕事の時間が多すぎると、最終的にアカウントを作ることにしました。php autologout inactive users

私はこの「sessionCheck.php」スクリプトを持っています。これは、彼が非アクティブであればユーザをログアウトするはずです。以下のコードを見てください。今のところ変数$ inactive = 15;ユーザーが15秒間アクティブでない場合は、ログアウトしてログアウトページにリダイレクトする必要があります。しかし、いくつかの奇妙な理由で、私は$ 15秒、1秒または60秒を非アクティブに設定しても、常に120秒かかるので、常に120秒かかります。しかし、変数を130に設定すると、ログアウトやリダイレクトは行われず、ページがリフレッシュされるだけです。

本当に論理的ではないように私は私の人生のために理由を理解できません。

<? 
session_start(); 

// set timeout period in seconds 
$inactive = 15; 
// check to see if $_SESSION['timeout'] is set 
if(isset($_SESSION['timeout'])) { 
    $session_life = time() - $_SESSION['timeout']; 
    if($session_life > $inactive) 
     { session_destroy(); header("Location: login.php?loggut"); 
     $db->Execute("UPDATE tblTimeLog SET LogoutTime = NOW() WHERE sid ='".session_id()."'".$row['konsulentid'].''); 

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

私の最初の考えは、それが優先されますか、自動的にすでにこのスクリプトに干渉する人をユーザーがログアウトし、いくつかの他のスクリプトでなければならないということでしたが、私はこのスクリプトなしでテストサイトを実行する場合、それがすべてでログアウトしませんどちらか。

また、最初のポスターは、ガイドラインを破ってもごめんなさい。すべての助けに感謝します!

+0

を私は、これはあなたの問題を解決するとは思わないが、それはそれの一部であってもよいです。 'Location:login.php?loggut'は正しいですか?ログアウトする必要がありますか? –

+0

ああ、それは正しいです、これに取り組んでいた以前のプログラマーは、ノルウェーと英語の名前の奇妙な組み合わせを使用しました。したがって、 "loggut"! –

+0

こんにちは@BalderKjøs、私はフランキーによって提案されたいくつかのマイナーチェンジでコードを実行し、それは完璧に動作します。名前を変えて名前を変更して確認するのが可能なので、あなたの変数名を他の名前に変更するだけです。 – vijay

答えて

0

クエリ後にヘッダーをリダイレクトしてスクリプトを終了して、クエリが処理され、ユーザーをログアウトしようとした後に$_SESSION['timeout']が更新されないように助言します。

また、実際のsession_id()をクエリで再度使用する前に、セッションを破棄しています。

は、この試してみて:

<? 
session_start(); 

// set timeout period in seconds 
$inactive = 15; 
// check to see if $_SESSION['timeout'] is set 
if(isset($_SESSION['timeout'])) { 
    $session_life = time() - $_SESSION['timeout']; 
    if($session_life > $inactive) 
     { 
       $db->Execute("UPDATE tblTimeLog SET LogoutTime = NOW() WHERE sid ='".session_id()."'".$row['konsulentid'].''); 
       session_destroy(); 
       header("Location: login.php?loggut"); 
       exit(); 
     } 
} 
$_SESSION['timeout'] = time(); 
?> 
+0

私はこれらの変更を試しても同じ問題を抱えていますが、私の問題を解決しなかったにもかかわらず、問題! –

+0

もう一度!私はまだこれで、ええ、ええ、これは、ユーザーが15秒後にアクションを行う場合、ページは代わりにログアウトし、 "login.php?loggut"に誘導します。ただし、ページは15秒後に自動的に更新されません!私はヘッダー( "リフレッシュ:0;場所:login.php?loggut")を使用してみましたが、それ自体はまだ更新されず、手動でリフレッシュされた場合は、 –

+0

それはあなたが望むものではありませんか?ユーザーが15秒以内にアクティブである限り、彼はログインしたままになります。非アクティブの15秒後、彼はログアウトされます。それは今起こっていることですよね? 15秒間は、ユーザーが使用していない時間がかなり長くなります。休止時間を1時間のようにすると、ユーザーはおそらくいくつかのページ訪問を行います。そこでは、タイムアウトセッションはすべてのページ訪問時に更新されます。 – Frankey

関連する問題