2017-02-14 4 views

ответ

2

Это можно сделать с помощью комбинации/JavaScript/Ajax и JQuery функции 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'); родом из? u havent установить его. –

+0

Я отредактировал эту страницу, чтобы получить более подробную информацию о is_logged_in index. – Rahi

+0

Я совмещаю ваш ответ со вторым ответом, он работает! Спасибо. –

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 укажите этот логин в __construct в 'MY_Controller'. Он будет автоматически вызван для всех действий. – kawadhiya21

+1

спасибо, я совмещаю ваш ответ с ответом выше, и он работает! –

0

проверить сеанс истечения срока действия, просто попробуйте прочитать переменную я хранится на входе

Я поместил это в My_Controller в папке application/core, и на этом основании распространите все остальные мои контроллеры.

в классе, у меня есть эта функция

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

в моем классе, в __construct я это сделать

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

поэтому, когда я сделать запрос, если сессия истекла, его перенаправляет на логин, нет необходимости проверять каждые 5 минут.

Смежные вопросы