Jump to content


Photo

Users Online Usando "access"


  • Faça o login para participar
6 replies to this topic

#1 WeeD

WeeD

    12 Horas

  • Usuários
  • 166 posts
  • Sexo:Não informado

Posted 16/12/2004, 13:48

Ae fazendo favor, alguem pode me da uma força aqui nesse sistema de usuários online. bom eu tava tentando faze aqui e tal, só que é o seguinte por exemplo é pra ele fica nessa forma:

Usuarios:
user1
user2

membros: 2
visitantes: 0
total: 2

só que acontece que, quando eu me logo ele aparece la 1 membro, total 1, e meu nome de usuario ali "imprimido", só que quando entra outra pessoa logada ou não ele ja não faz mais as "contagens" ai só fica na maquina do usuario o mesmo que fica na minha, o nome de usuario dele na tela e 1 membro, total 1. o que estou fazendo de errado no código abaixo ?

<%
    IF Session("sessaousuario") = "" THEN
        usuario = "-"
    ELSE
        usuario = Session("sessaousuario")
    END IF

    horas = Time()
    ip = Request.ServerVariables("REMOTE_ADDR")
    conexao.execute("INSERT INTO users_online (usuario,ip,horas) VALUES ('"&usuario&"','"&ip&"','"&horas&"')")
    conexao.execute("DELETE * FROM users_online WHERE horas < Time() - 60")

    set rs = conexao.execute("SELECT * FROM users_online")
    While Not rs.EOF
         Response.Write(""&usuario&"")
     rs.movenext
     Wend
%>
<%
     SQL = ("SELECT DISTINCT ip FROM users_online WHERE usuario <> '-' ")
     set rs = server.createobject("adodb.recordset")
     rs.open sql,conexao,3,3
     Response.Write("Cadastrados: <b>"&rs.recordcount&"<b>") 
%>
<%
     rs.close 
     set rs = nothing
     SQL = ("SELECT DISTINCT ip FROM users_online WHERE usuario = '-' ")
     set rs = Server.Createobject("adodb.recordset")
     rs.open sql,conexao,3,3 
     Response.Write("Visitantes: <b>"&rs.recordcount&"<b>")
%>
<%
     rs.close
     set rs = nothing
     SQL = ("SELECT DISTINCT ip FROM users_online")
     set rs = server.createobject("adodb.recordset")
     rs.open sql,Conexao,3,3 
     Response.Write("Total: <b>"&rs.recordcount&"<b>")
%>
<% 
     END IF
     rs.close 
     set rs = nothing
%>

còé ?

#2 mcoelho80

mcoelho80

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 17/12/2004, 09:38

Acho que o ideal para verificar a quantidade de usuários online é utilizar variáveis Application. Assim, quando houver o Session_OnEnd você consegue processar os usuários que sairam do site.

Funciona mais ou menos assim:

No Global.asa, Application_OnStart:

Application("conectados") = 0

No Global.asa, Session_OnEnd:

' Estou imaginando que uma vez logado a variável Session("usuario") é atribuida, portanto, somente se esta variável estiver presente é que subtraímos a conta.
If Session("usuario") <> "" Then
         Application("conectados") = Application("conectados") - 1
End If

Por último, na rotina de login.asp

Application("conectados") = Application("conectados") + 1
Session("usuario") = NOMEDOUSUARIO

Caso você tenha uma rotina de LogOff, utilize o seguinte código para "deslogar o usuário":

Application("conectados") = Application("conectados") - 1
Session.Abandon
É necessário diminuir o número de conectados pois Session.Abandon não executa Session_OnEnd do global.asa

Boa sorte.
Marcelo Coelho
marcelo@mco2.com.br

______________________________

MCO2 - Hospedagem de Sites
http://www.mco2.com.br

** Transfira seu domínio e ganhe 60 dias de hospedagem gratuita **
________________________________

#3 WeeD

WeeD

    12 Horas

  • Usuários
  • 166 posts
  • Sexo:Não informado

Posted 17/12/2004, 10:01

prefiro fazer usando banco de dados mesmo.
còé ?

#4 Tx.NET

Tx.NET

    || ||||||| ||| ||||||||

  • Banidos
  • PipPipPipPipPipPipPip
  • 619 posts
  • Sexo:Não informado

Posted 17/12/2004, 10:09

prefiro fazer usando banco de dados mesmo.

Aprenda com mcoelho80.
"Não adianta querer re-inventar a roda."

flws... (y)
> ls -la
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell

> shutdown -h now

#5 mcoelho80

mcoelho80

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 17/12/2004, 10:18

Para este tipo de rotina, não utilizo banco de dados para evitar ficar gerando muito INSERT/UPDATE na base de dados Access.

O Access é péssimo em gerenciar atualizações, o banco vai inflando conforme registros são alterados ou inseridos. (E para resolver, só compactando a base).

Por isso, para este tipo específico de rotina, eu uso variáveis Application, além de mais rápido, não infla o banco de dados.

Porém a solução adotada em Access também funciona, creio que apenas não seja a ideal em termos de performance, ou para um site com certo volume de acessos.
Marcelo Coelho
marcelo@mco2.com.br

______________________________

MCO2 - Hospedagem de Sites
http://www.mco2.com.br

** Transfira seu domínio e ganhe 60 dias de hospedagem gratuita **
________________________________

#6 |KILLING|

|KILLING|

    12 Horas

  • Usuários
  • 174 posts
  • Sexo:Não informado

Posted 18/12/2004, 01:24

eu já postei uma vez um sistema de users online, muito bom para banco de dados,

É SÓ USAR A PESQUISA ANTES DE POSTAR VALEW??????????

FUI...

#7 Agente Linhares

Agente Linhares

    fuis...abraços!

  • Ex-Admins
  • 3138 posts
  • Sexo:Não informado
  • Localidade:Biritiba Mirim-SP

Posted 18/12/2004, 02:37

http://forum.wmonlin...showtopic=50463

http://www.forumweb....156

tem vários ex. por aí..so dar uma buscadinha..
> Busca On-line - A Busca que faltava na Internet! - Cadastre-se!
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq