none
Guardar valor variável RRS feed

  • Pergunta

  • Oi gente!

    Estou com o seguinte problema: tenho uma página que faz o logout do usuário do meu sistema, atualizando o bando de dados com a hora que ele saiu (ou por ter apertado o botão sair ou pela sessao ter expirado) de acordo com o id de login dele. Antes que questionem, tenho que ter este controle pois o cliente solicitou um contador de usuários logados além de uma tabela onde ele possa consultar quem são os usuários logados.

    Até aí tudo bem, está funcionando. Só que outro dia deixei minha máquina ligada de um dia para o outro e o logout não foi realizado com sucesso pois, ao chamar a página de logout, o número do id de login havia expirado junto com o tempo da sessão. Aumentei o tempo de sessão, mas isto não é uma solução muito legal, então resolvi passar o id por query string. O problema é que, mesmo passando por query string, o valor não permanece, ou seja, se eu deixar o sistema aberto de um dia para o outro, o valor do id passado por query string some, e o meu logout não funciona, pois o valor do id fica em branco.

    Resumindo, preciso guardar um valor por um máximo de tempo possível.

    Já tentei também guardar o valor na página, em uma text box, mas não consegui deixar o visible dela false.

    Não sei se consegui explicar muito bem, mas alguém sabe o que eu posso fazer?

    Obrigada = )

    Paty
    quarta-feira, 9 de setembro de 2009 20:05

Respostas

  • Paty, você deve tratar os logouts pelo arquivo global.asa. Segue uma explicação sobre o mesmo, retirada de http://www.htmlstaff.org/ver.php?id=2512

    <script language=vbscript runat=server>
    SUB Application_OnStart
    ' Este evento é executado na primeira vez que uma página ASP é chamada dentro
    ' da sua aplicação.
    END SUB

    SUB Application_OnEnd
    ' Este evento é chamado quando a aplicação termina. Isto pode ser ocasionado
    ' através da ocorrência de um tempo limite de inatividade ou a parada do web site.
    END SUB

    SUB Session_OnStart
    ' Este evento é executado para cada usuário quando ele faz a primeira requisição
    ' de uma página na aplicação.
    END SUB

    SUB Session_OnEnd
    ' Este evento é chamado quando acaba a sessão de um usuário. Isto pode ser
    ' ocasionado por um término explícito (método session.abandon) ou pela ocorrência
    ' de um tempo limite de inatividade da sessão.
    END SUB
    </script>

    Portanto, você deve programar a sub Session_OnEnd de forma que ela dispare uma requisição de inserção no seu banco da informação de que o usuário fez logout. Sua página de logout deve continuar existindo, mas você deve implementar no global.asa para casos de expiração de sessão, como tem sido seu caso.
    sábado, 12 de setembro de 2009 18:37
  • você pode guardar a sesssão em uma tabela do banco por explo

    Session("visita") = Session.SessionID

    x =  Session("visita")
    set rs=conn.execute("SELECT * from tabela WHERE codigo ='"& x &"'")

    cada vez que elguem entrar ele guarda a session no banco assim ele pode ficar quanto tempo quiser


    Rinaldo Marques http://www.nanco.com.br
    quinta-feira, 15 de julho de 2010 10:13

Todas as Respostas

  • Paty, você deve tratar os logouts pelo arquivo global.asa. Segue uma explicação sobre o mesmo, retirada de http://www.htmlstaff.org/ver.php?id=2512

    <script language=vbscript runat=server>
    SUB Application_OnStart
    ' Este evento é executado na primeira vez que uma página ASP é chamada dentro
    ' da sua aplicação.
    END SUB

    SUB Application_OnEnd
    ' Este evento é chamado quando a aplicação termina. Isto pode ser ocasionado
    ' através da ocorrência de um tempo limite de inatividade ou a parada do web site.
    END SUB

    SUB Session_OnStart
    ' Este evento é executado para cada usuário quando ele faz a primeira requisição
    ' de uma página na aplicação.
    END SUB

    SUB Session_OnEnd
    ' Este evento é chamado quando acaba a sessão de um usuário. Isto pode ser
    ' ocasionado por um término explícito (método session.abandon) ou pela ocorrência
    ' de um tempo limite de inatividade da sessão.
    END SUB
    </script>

    Portanto, você deve programar a sub Session_OnEnd de forma que ela dispare uma requisição de inserção no seu banco da informação de que o usuário fez logout. Sua página de logout deve continuar existindo, mas você deve implementar no global.asa para casos de expiração de sessão, como tem sido seu caso.
    sábado, 12 de setembro de 2009 18:37
  • você pode guardar a sesssão em uma tabela do banco por explo

    Session("visita") = Session.SessionID

    x =  Session("visita")
    set rs=conn.execute("SELECT * from tabela WHERE codigo ='"& x &"'")

    cada vez que elguem entrar ele guarda a session no banco assim ele pode ficar quanto tempo quiser


    Rinaldo Marques http://www.nanco.com.br
    quinta-feira, 15 de julho de 2010 10:13