2016-05-07 18 views
3

私はcodeigniterフレームワークを初めて使用しており、組み込みセッションの仕組みは実際には分かりません。私が望むのは、セッションが終了すると、ユーザーはログインページにリダイレクトされるということです。私は、Googleや他のstackoverflowの質問の答えをチェックし、それらのすべてのコードを試しても動作しません。ネイティブのPHPセッションでは、セッションが指定された時間内に期限切れになった場合にリダイレクトするように指定する必要がありますが、コードシニターでそれを適用しても機能しません。私は設定のセッション有効期限値を取得して、ログに記録されたセッション中にユーザが蓄積した現在の時間と比較する方法も知らない。セッションが既に有効期限切れになっている場合、Codeigniterはログインページにリダイレクトします

setInterval(function(){ 
$.ajax({ 
    type: 'POST', 
    url: "<?php echo site_url('tms/check_session');?>", 
    success: function(data){ 
     console.log(data); 
    } 
}); 
},300); 
+0

なぜコメントを残していない場合でも、私にマイナスを与えましたか? – SilverRay

+0

私はあなたに投票しませんでした:しかし、ここでは多くのことをしていますが、あなたが試したコードを提供していないので、なぜそう思っていますか – user4419336

+0

あなたが試したものを提供してください –

答えて

2

まず、application/core下コアコントローラを作成します。これは、コントローラ

public function check_session() 
{ 
    $logged_in = $this->session->userdata('logged_in'); 

    if(!$logged_in) 
    { 
     $this->logout(); 
    } 
} 

に機能しており、これはアヤックスである

....助けてください。また、あなたが「ログに記録された」と呼ばれる値を渡す必要があり

class Someclass extends User_Controller 

:以下のようなあなたのコントローラクラスを作成します

class User_Controller extends CI_Controller { 

    public function __construct() 
    { 

     parent::__construct(); 

     if ($this->session->userdata['logged'] == TRUE) 
     { 
      //do something 
     } 
     else 
     { 
      redirect('login'); //if session is not there, redirect to login page 
     } 

    } 
} 

:あなたはここにMY_Controller.php

はMY_Controller.phpための一例である、それを呼び出すことができますあなたのセッション配列で。例:

セッションが終了すると、システムはユーザーをログインページにリダイレクトします。このセッション制御をJavaScriptで行いたい場合は、そのためのコードを書く必要があります。ところで、私はこれを示唆していません。システムの作業負荷を増やす必要はありません。私のコードでは、ユーザーが別のページを訪問したときにセッションが終了すると、システムは彼を追い払います。

public function check_session() 
{ 


    if(!$this->session->userdata['logged']) 
    { 
     redirect('someurl'); 
    } 
} 
+0

あなたのコードを試しましたが、私のコントローラ内ではなく、私のビューヘッダページ内にあり、それは動作します...ありがとう... – SilverRay

関連する問題