Я создаю веб-приложение, которое, когда администратор входит в систему, отображает 2 варианта,
- Выход из системы
- Проверка правильности токена.
Как только администратор входит в систему, его сеанс начинается, и в этом сеансе его идентификатор и токен сохраняются, этот токен действует в течение 17 часов и сохраняется в таблице базы данных user_auth вместе с его истечением expired_at (datetime) иid (целое число) '.Если администратор нажимает на 2-й вариант, токен, сохраненный в сеансе, сравнивается с токеном в базе данных и проверяется срок его действия.если токен совпадает и срок его действия истек, администратору будут показаны данные.Для этого
учетная запись (просмотр)
<a href=" <?php echo site_url('admin/logout') ?> ">logout</a>
<a href=" <?php echo site_url('admin/checkval') ?> ">check valididty of token</a>
admin (контроллер)
public function checkval(){
$this->load->library('session');
$goal = $this->session->userdata('user_id');
$uid = $goal[0];
$token = $goal[1];
$this->load->model('loginmodel');
$check_id = $this->loginmodel->token_valid($uid, $token);
if($check_id === TRUE){
$data['query'] = $this->loginmodel->get_last_ten_entries();
$this->load->view('admin/account', $data);
print_r($data);
echo "valid";
}else {
echo "invalid";
}
}
Модель входа (модель)
public function token_valid($uid, $token)
{
$this->db->select('expired_at');
$this->db->from('user_auth');
$this->db->where('id',$uid);
$this->db->where('token',$token);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
$expired_date = $query->row()->expired_at;
$expired_date = date_create($expired_date);
$cdate = date_create('now');
$interval = date_diff($expired_date,$cdate);
$hour = $interval->h;
if($hour <= 17)
{
return TRUE;
}else
{
return FALSE;
}
}
}
, но проблема в том, что если администратор входит в систему на одной вкладке в браузере, а на другой вкладке или в окне я открываю checkval () контроллера, т.е. http://localhost/ci/index.php/admin/checkvalданные все еще видны.Я хочу, чтобы данные отображались только на той вкладке, в которой администратор вошел в систему, как только будет открыта другая вкладка, следует начать новый сеанс.
Как мне это сделать?
Спасибоза ваши предложения.