Ir para conteúdo

POWERED BY:

Arquivado

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

sDesv

Asp + session + BD

Recommended Posts

Pessoal,

 

Como devo fazer para atualizar um registro no Banco de Dados quando encerrada a seção de um usuário no servidor?

Será que alguém pode me ajudar?

 

PS:. Estou usando ASP + ACCESS

 

Desde já agradeço.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, na verdade você terá que fazer isso ANTES de a session ser fechada... pq sem session, nao tem como localizar o usuario...

 

entao o que você pode fazer é: no botao de SAIR você linka para alguma pagina tipo sair.asp... nessa pagina sair.asp você coloca a ação de update do db...

 

na mesma pagina (DEPOIS do Update) você coloca o fechamento da session e direcionando para a pagina final... ficaria mais ou menos assim:

(obs: a session com o id do usuario você ja vai ter que armazenar no login dele...)

sair.asp

ID_USUARIO = session("id_usuario")

SQL = "UPDATE TABELA_USUARIO SET REGISTRO='"&variavel&"' WHERE ID_USUARIO="&ID_USUARIO
Conexao.Execute(SQL)

Session.Abandon()

Response.Redirect "pagina.asp"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, na verdade você terá que fazer isso ANTES de a session ser fechada... pq sem session, nao tem como localizar o usuario...

 

entao o que você pode fazer é: no botao de SAIR você linka para alguma pagina tipo sair.asp... nessa pagina sair.asp você coloca a ação de update do db...

 

na mesma pagina (DEPOIS do Update) você coloca o fechamento da session e direcionando para a pagina final... ficaria mais ou menos assim:

(obs: a session com o id do usuario você ja vai ter que armazenar no login dele...)

sair.asp

ID_USUARIO = session("id_usuario")

SQL = "UPDATE TABELA_USUARIO SET REGISTRO='"&variavel&"' WHERE ID_USUARIO="&ID_USUARIO
Conexao.Execute(SQL)

Session.Abandon()

Response.Redirect "pagina.asp"

Primeiramente, muito obrigado pela dica.

Mas me resta uma dúvida....

E se cair a energia no momento em que o usuário está logado...? este registro vai ficar sem ser atualizado correto? Não vai dar tempo de redirecionar para a página que faz o UPDATE no BD. É isso mesmo? Há algo que se possa fazer?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, na verdade você terá que fazer isso ANTES de a session ser fechada... pq sem session, nao tem como localizar o usuario...

 

entao o que você pode fazer é: no botao de SAIR você linka para alguma pagina tipo sair.asp... nessa pagina sair.asp você coloca a ação de update do db...

 

na mesma pagina (DEPOIS do Update) você coloca o fechamento da session e direcionando para a pagina final... ficaria mais ou menos assim:

(obs: a session com o id do usuario você ja vai ter que armazenar no login dele...)

sair.asp

ID_USUARIO = session("id_usuario")

SQL = "UPDATE TABELA_USUARIO SET REGISTRO='"&variavel&"' WHERE ID_USUARIO="&ID_USUARIO
Conexao.Execute(SQL)

Session.Abandon()

Response.Redirect "pagina.asp"

Primeiramente, muito obrigado pela dica.

Mas me resta uma dúvida....

E se cair a energia no momento em que o usuário está logado...? este registro vai ficar sem ser atualizado correto? Não vai dar tempo de redirecionar para a página que faz o UPDATE no BD. É isso mesmo? Há algo que se possa fazer?

 

Abraços

 

Olha, acho que eh isso mesmo... eh por isso que normalmente o registro que se guarda é de quando o usuario ENTROU no sistema e nao de quando ele saiu... pq SAIR DO SISTEMA é uma coisa dificil de se prever, ja que, como você disse, a energia pode cair, a session pode simplesmente expirar ou o usuario pode fechar o navegador sem sair do sistema (e MUITA gente faz isso)...

 

Essa é a única forma que eu conheço de fazer isso... mas nao funcionaria direito pq nao atingiria a todos os usuários.. por isso, como eu disse, normalmente o registro de se guarda eh o de entrada e nao o de saida ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca vi o comportamento de uma aplicação quando ela é encerrada por falta de energia...

 

acho que você ñ tem como escapar disso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, na verdade você terá que fazer isso ANTES de a session ser fechada... pq sem session, nao tem como localizar o usuario...

 

entao o que você pode fazer é: no botao de SAIR você linka para alguma pagina tipo sair.asp... nessa pagina sair.asp você coloca a ação de update do db...

 

na mesma pagina (DEPOIS do Update) você coloca o fechamento da session e direcionando para a pagina final... ficaria mais ou menos assim:

(obs: a session com o id do usuario você ja vai ter que armazenar no login dele...)

sair.asp

ID_USUARIO = session("id_usuario")

SQL = "UPDATE TABELA_USUARIO SET REGISTRO='"&variavel&"' WHERE ID_USUARIO="&ID_USUARIO
Conexao.Execute(SQL)

Session.Abandon()

Response.Redirect "pagina.asp"

Primeiramente, muito obrigado pela dica.

Mas me resta uma dúvida....

E se cair a energia no momento em que o usuário está logado...? este registro vai ficar sem ser atualizado correto? Não vai dar tempo de redirecionar para a página que faz o UPDATE no BD. É isso mesmo? Há algo que se possa fazer?

 

Abraços

 

Olha, acho que eh isso mesmo... eh por isso que normalmente o registro que se guarda é de quando o usuario ENTROU no sistema e nao de quando ele saiu... pq SAIR DO SISTEMA é uma coisa dificil de se prever, ja que, como você disse, a energia pode cair, a session pode simplesmente expirar ou o usuario pode fechar o navegador sem sair do sistema (e MUITA gente faz isso)...

 

Essa é a única forma que eu conheço de fazer isso... mas nao funcionaria direito pq nao atingiria a todos os usuários.. por isso, como eu disse, normalmente o registro de se guarda eh o de entrada e nao o de saida ;)

 

 

Cara, entendi perfeitamente o que você disse... mas é que no meu caso é o seguinte...

 

Tenho um banco com o ID, NOME, LOGIN, SENHA e STATUS (que corresponde se o usuário está online ou não tipo "true" ou "false")... Quando o usuário loga ele seta o STATUS como "true" e ao sair ele seta como "false". (com isso faço o controle para não logarem mais de uma vez com o mesmo login), e no beforeunload da página com o javascript eu redireciono para a pagina asp que pega o cara da sessão e coloca o STATUS como “false” (não logado). Isso já está funcionando perfeitamente mas resolvi fazer o teste de logar em uma máquina e desliga-la de repente. Resultado: ele não atualiza o STATUS do usuário como “false”.

 

Bom, é isso rs...

 

Mais uma vez, agradeço pela atenção.

 

Muito obrigado.

 

 

Nunca vi o comportamento de uma aplicação quando ela é encerrada por falta de energia...

 

acho que você ñ tem como escapar disso!

rs... beleza

 

Estou procurando uma solução feito um doido rss..

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos,

 

cara não li completamente o tópico mas vi que a resposta ainda ficou devendo um pouco...

 

Faz o seguinte... se você quer que este update rode quando o usuário abandonar a sessão... então o melhor a fazer é utilizar o GLOBAL.ASA no evento Session_onEnd()...

 

você põe o código lá e sempre que você der um session.abandon ou o tempo da sessão expirar, inevitavelmente o evento Session_onEnd rodará... mesmo que a energia do usuário acabe.... (só não pode acabar é a energia do servidor)..kkkkk

 

Aqui no IMaster você encontra fóruns que falam sobre o Global.asa se precisar de maiores detalhes...

 

Abraços a todos...

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.