2017-02-14 8 views

答えて

2

これはjQueryの/ JavaScriptの/アヤックスとCodeIgniterの機能の組み合わせで行うことができます。

JS

<script type="text/javascript"> 
    var currentSessionValue = 1; 
    // pseudo code 
    setTimeout(checkSession, 5000); 
    function checkSession() { 
     $.ajax({ 
      url: "CheckSession/check_session", //Change this URL as per your settings 
      success: function(newVal) { 
       if (newVal != currentSessionValue); 
        currentSessionValue = newVal; 
        alert('Session expired.'); 
        window.location = 'Your redirect login URL goes here.'; 
       } 
     }); 
    } 
</script> 

CodeIgniterの

class CheckSession extends Controller{ 
    public function __construct(){ 
     session_start(); 
    } 
    public function check_session(){ 
     //Below last_visited should be updated everytime a page is accessed. 
     $lastVisitTime = $this->session->userdata("last_visited"); 
     $fiveMinutesBefore = date("YmdHi", "-5 minutes"); 

     echo date("YmdHi", strtotime($lastVisitTime)) > $fiveMinutesBefore > 1 : 0; 
    } 
} 
+0

$ this-> session-> userdata( 'is_logged_in')はどこですか?から来る?あなたはそれを設定しません。 –

+0

is_logged_inインデックスの詳細を編集しました。 – Rahi

+0

私はあなたの答えを2番目の答えと組み合わせて、それは動作します!ありがとうございました。 –

2

last_visitedタイムスタンプをセッション変数として保存するだけです。ユーザが次に訪問するときに、現在のタイムスタンプとセッション中のタイムスタンプとの違いをチェックします。 5分以上経過している場合は、ユーザーにサインアウトします。

$this->load->library('session'); 
$this->session->set_userdata(array(
          'last_visited' => time() 
        )); 
+0

すべての機能についてチェックしなければなりませんか? –

+0

これは 'class xxxx extends MY_Controller {}'のように書くことができます。MY_Controller.phpでは、MY_Controller'の__constructでこのログインを指定します。すべてのアクションに対して自動的に呼び出されます。 – kawadhiya21

+1

ありがとう、私は上記の答えとあなたの答えを組み合わせて、それは動作します! –

0

私は単純にして、セッションの有効期限を確認し、私は、ログイン

に格納された変数を読み取ろうと、私はこの中に置かMy_Controllerをフォルダapplication/coreにコピーし、これに基づいて他のコントローラをすべて拡張します。クラスの

、私は私が要求を行うときに、セッションが、有効期限が切れている場合__constructで私は、ので、この

if (!$this->_is_logged_in()) { 
    $this->_log_out("Session Expired", base_url("login")); 
} 

を行い、私のクラスでは、この機能

function _is_logged_in() 
    { 
     return !empty($this->session->userdata('user_id')); 
    } 

を持っています5分ごとに確認する必要はありません。

関連する問題