Jump to content
Fórum Script Brasil
  • 0

Como Saber quando A Sessao é Encerrada


kuroi

Question

é o seguinte. no meu site tenho uma tabela onde eu vou guardar os dados de cada visita.

ai assim q qualquer pagina do site for carregada, tenho um include q vai checar a sessao. se ela estiver vazia, ele vai e grava na tabela os dados do usuario, tipo ip, navegador, hora de acesso (hora do inicio da sessao) e etc.

quero saber se tem como saber quando essa sessao for encerrada. ai quando ele sair eu gravo no banco a hora q ele finalizou a sessao.

da pra fazer isso no php?? sei q no asp eu faria acho q com o Session_OnEnd no global.asa, mas acho q o php não tem algo assim. como fazer com php??

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

A menos que exista um botão "sair" para destruir a sessão não, mas o que você pode fazer é, após isso que você faz (ver se existe a sessão e se não existir criar), em toda página que o cara entrar você verifica se existe, se existir você atualiza um campo da tabela, esse campo da tabela sempre vai guardar a última vez (data/hora) que o usuário entrou em alguma página do site, claro que o cara pode ficar 10 minutos em uma página e ai sair do site... mas é o modo que existe com PHP... também dá pra tentar fazer uma gambiarra com JS...

Link to comment
Share on other sites

  • 0

entendi valeu.

mas então como funciona aqui o forum por exemplo?? a lista de usuarios online??

como ele sabe quando eu sai e não estou mais online??

tipo, se eu clico na pagina inicial do forum ele diz, na lista de usuarios, q eu to vizualizando a index, ate ai td bem. mas ai eu fecho o navegador se clicar em nenhum botao sair nem nd. como ele sabe q eu sai e me tira da lista online??

Link to comment
Share on other sites

  • 0

eu acredito que a lista de usuarios aqui do fórum deve funcionar +- assim (pelo menos é assim que eu faço no meu site):

toda vez que alguém carrega uma página, grava no db a hora que o cara fez isso + 10 minutos (varia esse tempo). Ao mesmo tempo tem uma query para conferir se tem alguma hora no db que está menor que o horário atual.

Ai funciona assim... quando você está mexendo no site, o script está sempre salvando sua hora + um tempo no db. Toda vez que algum usuário carregar uma página, a query que confere a data do db vs. data atual vai verificar que já passou (no caso deste exemplo 10 min) que você não atualizou nem uma página e vai te retirar dos usuários online.

Deu para entender? :D

falou

Link to comment
Share on other sites

  • 0

hum entendi. tb eu não preciso mesmo saber quando a sessao é encerrada. mesmo q ele fique com a pagina aberta, o ultimo movimento dele no site foi o ultimo movimento da sessao.

valeu pela ajuda.

EDITADO:

é verdade, ahhaha lembrei de uma vez q eu tava no trampo e o Andersonjb (moderador de .NET) tava sentado no pc do lado do meu e tinha entrado no forum. ai ele desligou o pc e foi embora e, no pc q eu tava, eu abri o forum e mostrava q ele ainda tava logado mesmo depois de ter desligado o pc. e continuou logado por um tempo. na hora eu achei estranho isso, mas já tinha ate esquecido.

deve ser por isso mesmo, o forum mostra online as pessoas q acessaram alguma pagina ate um determinado tempo atras.

Edited by kuroi
Link to comment
Share on other sites

  • 0

A gambiarra JS que foi citada acho que é opção que retrata de forma mais real quando o usuário está saindo de uma página.

Em javaScript, no evento "onunload" você faz uma requisição por AJAX que faz esse mesmo trabalho que você faria quando a página é carregada.

Se não existe a sessão, quando carrega a página, cria ela.

Quando sai da página, atualiza os dados no BD.

Link to comment
Share on other sites

  • 0
A gambiarra JS que foi citada acho que é opção que retrata de forma mais real quando o usuário está saindo de uma página.

Em javaScript, no evento "onunload" você faz uma requisição por AJAX que faz esse mesmo trabalho que você faria quando a página é carregada.

Se não existe a sessão, quando carrega a página, cria ela.

Quando sai da página, atualiza os dados no BD.

é, quando o esserra falou eu pensei nisso tb. mas ai se o cara desabilitasse o javascript do browser ia dar q ele ficaria logado pra sempre.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...