Duvida ao Encerrar Sessão PHP

1. Duvida ao Encerrar Sessão PHP

Cleiton Ap. de Souza
cleitonapsouza

(usa Debian)

Enviado em 28/11/2013 - 17:29h

Boa tarde pessoal,

Estou aprendendo agora a usar sessões com php.
No meu projeto gostaria que quando o usuário fechar o navegador no "X",
fizesse uma gravação no banco.

Mas como eu verifico em php, se o navegador foi fechado no "X"?


Muito obrigado Galera


  


2. Re: Duvida ao Encerrar Sessão PHP

Leandro Nkz
leandro

(usa Arch Linux)

Enviado em 01/12/2013 - 18:17h

Olá!
Eu li sua mensagem.

E a resposta é: em PHP, creio eu, não dá pra fazer isso. Esse tipo de coisa é possível em linguagens client-side, como o JavaScript.

Eu não cheguei a testar, mas você pode dar uma olhada nestes tópicos:

https://groups.google.com/forum/#!topic/listaphp/dCppFMgSrE4
http://forum.imasters.com.br/topic/367239-confirmao-ao-fechar-browser/

Ao conseguir implementar este tipo de evento, você pode enviar os dados pro banco via Ajax.

Mas o grande problema das linguagens deste tipo é a compatibilidade: não é garantido que o que você for implementar funcione corretamente em todos os browsers (especialmente o IE, rs).

Me permita perguntar: qual será a finalidade deste recurso? Será que não é possível modificar um pouco a lógica para contornar isso de uma forma mais fácil e segura de implementar?


3. Re: Duvida ao Encerrar Sessão PHP

Cleiton Ap. de Souza
cleitonapsouza

(usa Debian)

Enviado em 01/12/2013 - 18:33h

Olá Leandro,

Muito obrigado pelo seu retorno.

Estou montando um sistema de login, mas é para fins de aprendizado mesmo.
Estou criando um login que não seja multi usuário, onde quando o usuário loga ele grava no banco de dados em uma tabela de controle de sessões que criei, e quando faz logout também grava nessa tabela para liberar uma nova sessão.
Mas quando se fecha no X, não consegui tratar.
Vou dar uma olhada nesse tópico que você me mandou.

Obrigado pela atenção.


4. Re: Duvida ao Encerrar Sessão PHP

Leandro Nkz
leandro

(usa Arch Linux)

Enviado em 01/12/2013 - 19:41h

tuxton escreveu:

Olá Leandro,

Muito obrigado pelo seu retorno.

Estou montando um sistema de login, mas é para fins de aprendizado mesmo.
Estou criando um login que não seja multi usuário, onde quando o usuário loga ele grava no banco de dados em uma tabela de controle de sessões que criei, e quando faz logout também grava nessa tabela para liberar uma nova sessão.
Mas quando se fecha no X, não consegui tratar.
Vou dar uma olhada nesse tópico que você me mandou.

Obrigado pela atenção.


Entendi. Esse é um belo desafio, rsrs.

Você pode fazer de uma outra forma (não é bonito, mas é um meio mais garantido): estabelecer um limite de tempo para cada login. Funciona assim:

1. Ao logar, o usuário grava no banco a hora atual. Cria-se também uma variável $_SESSION['timer'] para armazenar a hora atual na sessão recém-aberta.

2. A cada "session_start()" que você usar para verificar se o usuário está logado, cheque se já se passaram 5 minutos (por exemplo), através da variável $_SESSION['timer']. Se o tempo de 5 minutos já se passou, dê um update no BD e na variável $_SESSION['timer'] com a hora atual.

Desse jeito, você armazena no BD a hora da última atividade do usuário (pelo menos a cada 5 minutos, para evitar que se façam muitas requisições ao BD).

Por fim, quando um outro usuário for logar, cheque no BD se a última atividade de um usuário é maior do que 5 minutos. Se for maior, é porque o usuário está inativo. Se for menor, ele ainda está logado.

Desse jeito, há um único inconveniente: um delay de 5 minutos para que um usuário inativo tenha a sua sessão expirada. Mas você pode diminuir ou aumentar isso dependendo do propósito do seu projeto.

Para assegurar-se de que 5 minutos de inatividade encerre a sessão do usuário, você pode combinar isso com o $lifetime do session_set_cookie_params: http://www.php.net/manual/pt_BR/function.session-set-cookie-params.php

Um abraço.


5. Re: Duvida ao Encerrar Sessão PHP

Cleiton Ap. de Souza
cleitonapsouza

(usa Debian)

Enviado em 01/12/2013 - 23:12h

Leandro,

Gostei da ideia de colocar limite de tempo para inatividade.
Acho que vou tentar seguir o que você disse.
Qualquer coisa vc se importa se eu tirar dúvidas com vc?

Obrigado mesmo.


6. Re: Duvida ao Encerrar Sessão PHP

Diovani da Cruz Mangia Maciel
diovanimangia

(usa Ubuntu)

Enviado em 01/12/2013 - 23:17h

Amigo, de uma olhada neste artigo, talvez te ajude

"http://phpbrasil.com/phorum/read.php?1,29914"

copie e cole o link entre áspas no seu navegador porque o link deu errado por causa da virgula depois do 1


7. Re: Duvida ao Encerrar Sessão PHP

Cleiton Ap. de Souza
cleitonapsouza

(usa Debian)

Enviado em 01/12/2013 - 23:21h

Boa noite Diovanimangia,
Vou dar uma olhada.

Obrigado.


8. Re: Duvida ao Encerrar Sessão PHP

Leandro Nkz
leandro

(usa Arch Linux)

Enviado em 02/12/2013 - 12:44h

tuxton escreveu:

Leandro,

Gostei da ideia de colocar limite de tempo para inatividade.
Acho que vou tentar seguir o que você disse.
Qualquer coisa vc se importa se eu tirar dúvidas com vc?

Obrigado mesmo.


Pode contar comigo. Na medida do possível (e se eu souber), poderei ajudar.

Abraço.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts