Ir para conteúdo
Fórum Script Brasil
  • 0

Como Saber quando A Sessao é Encerrada


kuroi

Pergunta

é 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 para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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.

Editado por kuroi
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...