Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Insomnia

Atualizando dados no BD após o fechamento do navegador.

Recommended Posts

Eaê pessoar! Nunca postei aqui no fórum, mas to precisando de uma idéia, se alguém puder ajudar, estarei grato.

 

o POBREMA é o seguinte:

 

Um amigo meu desenvolveu uma aplicaçãozinha boba, mas que exije que no momento em que o usuário fechar o navegador, ele seja desconectado do sistema...

 

A idéia dele foi:

 

No evento onunload (window.onunload) da página, ele colocou uma popup abrindo fora da área visível da tela e este executa um .asp que muda o status em um campo do bd (campo númerico "status" na tabela de "usuários" - 0 pra offline. 1 pra online). Apesar de funcionar para quem permite o uso de popups, achei a idéia um pouco grosseira porque dificilmente um usuário comum não utiliza uma medida preventiva contra poups, mesmo que de forma inconsciente.

 

Alguém aí tem uma idéia melhor? Pensei em utilizar um timeout pra sessão extremamente baixo e utilizar, sei lá, um pequeno iframe nas páginas da aplicação, este faria contato com o servidor a cada XX segundos mantendo a sessão ativa... Mas como funciona o Session.Timeout? Se eu defino um valor pro Session.Timeout ele altera o tempo de todas as sessões do domínio??? Eu teria várias aplicações rodando no mesmo domínio e só em uma delas eu precisaria de um valor baixo... Em todas as outras, os valores padrão são aplicáveis...

 

Enfim, deixo a dúvida aí... Se alguem puder ajudar. Lembrando que eu não sou coder e, caso não entenderem, eu tento explicar melhor.

 

Abraços e obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Enton Smith, "já saquei qualé a do global.asa" e já sei do evento session_onEnd() que executa instruções quando uma sessão de usuário está finalizando... Mas isso ainda não abriu a minha cabeça pra resolver o problema não. Se você ou alguém mais puder ajudar...Abraços e valew Smith...

Compartilhar este post


Link para o post
Compartilhar em outros sites

No evento onunload (window.onunload) da página, ele colocou uma popup abrindo fora da área visível da tela e este executa um .asp que muda o status em um campo do bd (campo númerico "status" na tabela de "usuários" - 0 pra offline. 1 pra online)

Enton Smith, "já saquei qualé a do global.asa" e já sei do evento session_onEnd() que executa instruções quando uma sessão de usuário está finalizando... Mas isso ainda não abriu a minha cabeça pra resolver o problema não. Se você ou alguém mais puder ajudar...

 

Abraços e valew Smith...

então... você tem que colocar esse script .asp que você tem na popup dentro do global.asa... posta o código aqui que a gente te ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, não estou na máquina que tem a app no momento... Mas vamos ver se você me esclarece algumas coisas, mesmo sem código.

 

1. Eu já sabia da possibilidade de utilizar o session.onEnd() e do próprio global.asa, o meu problema é que eu precisava de algo que atualizasse o bd de forma instantânea. Quando eu utilizo esse "esquema" com a popup, no momento em que a janela é fechada, a popup é aberta e o bd atualizado. O que eu realmente gostaria de saber é se existe alguma outra forma para que isso aconteça, já que muita gente usa bloqueador para popup... Mas seria muito importante que essa atualização no bd rolasse em real time.

 

2. Se eu setar um novo valor paro o Timeout, que tem como unidade padrão o minuto, eu altero o tempo de todas as sessões do meu domínio? Eu teria várias "apps" rodando, então um tempo de sessão que eu seto para "0,5 minutos" no lado "cliente/usuário da aplicação" ficaria inadequado no lado "administrativo", ou mesmo em outras applicações no mesmo domínio, por exemplo. COmo resolveria esse problema? Ou é possível setar tempos diferentes de duração da sessão em lugares distintos em um mesmo domínio?

 

Resumindo: meu medo é, utilizar esse esquema do iframe/timeout baixo deixando a conexão ativa no lado cliente desta aplicação e esse valor de timeout se estender a todo o restante do domínio... Inclusive a outras aplicações.

 

Não preciso de muita ajuda na parte prática da coisa (código), se eu entender "o que fazer", o resto fica moleza.

 

Abraço e valew novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim:

 

<script>function atualizadb(){  window.open('pagina.asp','_self');}</script><body onunload="atualizadb()">

com isso, antes da pagina fechar, ela executa a sua pagina asp, atualizando seu DB.

testei aqui com um insert e funfou certinho ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim:

<script>function atualizadb(){  window.open('pagina.asp','_self');}</script><body onunload="atualizadb()">
com isso, antes da pagina fechar, ela executa a sua pagina asp, atualizando seu DB.testei aqui com um insert e funfou certinho ^^
Opa, valew Felipe... Vou tentar encontrar um tempo nesse fds NATALINO para testar e posto aqui se deu certo ou não. Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.