Como destruir a session com o encerramento do navegador no codeigniter

Recentemente eu desenvolvi uma aplicação web com o codiciador. Eu estou enfrentando um problema relacionado à session, mal.

Cenário do problema:

Se o usuário A tiver logado no aplicativo, o ID do usuário foi configurado na session. Depois de fazer o usuário da tarefa, fechou o navegador e saiu do computador. Pouco tempo depois, o usuário B veio e abriu o navegador e ver o aplicativo estava no estado conectado. ou quando o usuário B anote a url e pressione enter diretamente redirecionado para o aplicativo sem qualquer autenticação usando a session anterior.

Utilizei a seguinte configuração para session:

$config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 1800; $config['sess_expire_on_close'] = FALSE; $config['sess_encrypt_cookie'] = FALSE; $config['sess_use_database'] = FALSE; $config['sess_table_name'] = 'ci_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; $config['sess_time_to_update'] = 300; 

Agora, minha pergunta é como eu posso destruir toda a session com o fechamento do navegador ou guia do navegador no codeigniter?

Você pode usar o pedido de javascript e asynchronous. Quando você fecha a janela, o manipulador de window.onunload é chamado

 var unloadHandler = function(e){ //here ajax request to close session }; window.unload = unloadHandler; 

Para resolver o problema do redirecionamento, lado php você pode usar um contador

  class someController extends Controller { public function methodWithRedirection(){ $this->session->set_userdata('isRedirection', 1); //here you can redirect } } class homeController extends Controller{ public function closeConnection(){ $this->load->library('session'); if($this->session->userdata('isRedirection')!== 1){ //destroy session } } } 

Edite o arquivo config.php e configure sess_expire_on_close como true .

por exemplo

 $config['sess_expire_on_close'] = TRUE; 

Adicione um botão de logout.

Faça com que o botão destrua a session com a function construída em destruir CI.

 $this->session->sess_destroy(); 

Dê uma olhada nisso e veja se isso ajuda.

https://github.com/EllisLab/CodeIgniter/wiki/PK-Session

Bem, eu não sei se você já teve a solução, mas eu me encontro no mesmo cenário no CodeIgniter Versão 3.0, em config.php , vá para a seção Session Variables e você pode definir:

$ config [‘sess_expiration’] = 0;

'sess_expiration

 The number of SECONDS you want the session to last. Setting to 0 (zero) means expire when the browser is closed. 

Abra o aplicativo de arquivo de configuração geral / config / config.php , procure por $ config [‘ sess_expiration ‘]

mudança

 $config['sess_expiration'] = 7200; 

para

 $config['sess_expiration'] = -1; 

Para CI-3.0.4, localize os itens abaixo dentro de “config.php” e configure-se de acordo

 $config['sess_expiration'] = -1; $config['sess_time_to_update'] = -1; 

no arquivo $ config.php

 change $config['sess_expiration'] = 7200; 

para

 $config['sess_expiration'] = 0;