Ir para conteúdo

POWERED BY:

Arquivado

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

Aeglos

[Resolvido] Usuários logados on-line

Recommended Posts

Pessoal,

 

Fiz algumas melhorias, por favor avaliem aí.

Está funcionando corretamente. É só acertar o tempo de timeout que você quer no seu site, ou deixar sem.

Os códigos estão abaixo:

 

global.asa:

<script language="VBScript" runat="server">Sub Application_OnStart	Application.Lock()  Session.Timeout = 3  Application("anonimos") = 0  Application("id") = ""	Application.UnLock()End SubSub Application_OnEnd	Application.Lock()  Application("anonimos") = 0  Application("id") = ""	Application.UnLock()End SubSub Session_OnStart	Application.Lock()  Application("anonimos") = Application("anonimos") + 1	Application.UnLock()End SubSub Session_OnEnd	Application("id") = Replace(Application("id"),Request.Cookies("id")&",","")	Application.Lock()  Application("anonimos") = Application("anonimos") - 1  If Application("anonimos") < 0 Then Application("anonimos") = 0	Application.UnLock()End Sub</script>

 

O login usa um sistema qualquer que você tenha, mas inclua o script abaixo na página d eprocessamento do login para forçar a identificação de um usuário. No meu caso eu guardo as informações em cookies para permitir o clássico "lembrar de mim"

 

login.asp

<%Response.Cookies("id") = id_usuario ' Insira o id do usuário que você tem no banco, ou crie um númerico tipo INTApplication("anonimos") = Application("anonimos") - 1Application("id") = Application("id") &  Request.Cookies("id") & ","%>

 

Não tem mais a página include.asp

 

Temos também o logout de usuário, se ele sair do site:

 

logout.asp

<%If Request.Cookies("id") <> "" Then	Application("id") = Replace(Application("id"),Request.Cookies("id")&",","")	For Each objCookie In Request.Cookies  Response.Cookies(objCookie) = ""	NextSession.Abandon()End If%>

 

Por fim a página que mostra os dados deve ter o seguinte código, senão você não visualiza tudo isso, né?:

Sua página que mostra os usuários on-line

<%If NOT Application("id") = "" Then 	ids = Cstr(Application("id"))	ids = Left(ids,(Len(ids)-1))End IfDim rs_useron__idApprs_useron__idApp = "1"If (ids <> "") Then   rs_useron__idApp = idsEnd IfDim rs_useronDim rs_useron_numRowsSet rs_useron = Server.CreateObject("ADODB.Recordset")rs_useron.ActiveConnection = MM_conn_STRINGrs_useron.Source = "SELECT login, nivel FROM tbl_usuarios WHERE id IN(" + Replace(rs_useron__idApp, "'", "''") + ") ORDER BY login"rs_useron.CursorType = 0rs_useron.CursorLocation = 2rs_useron.LockType = 1rs_useron.Open()rs_useron_numRows = 0Dim rs_usercount__idApprs_usercount__idApp = "1"If (ids <> "") Then   rs_usercount__idApp = idsEnd IfDim rs_usercountDim rs_usercount_numRowsSet rs_usercount = Server.CreateObject("ADODB.Recordset")rs_usercount.ActiveConnection = MM_conn_STRINGrs_usercount.Source = "SELECT COUNT(*) as total FROM tbl_usuarios WHERE id IN(" + Replace(rs_usercount__idApp, "'", "''") + ")"rs_usercount.CursorType = 0rs_usercount.CursorLocation = 2rs_usercount.LockType = 1rs_usercount.Open()rs_usercount_numRows = 0Dim Repeat2__numRowsDim Repeat2__indexRepeat2__numRows = -1Repeat2__index = 0rs_useron_numRows = rs_useron_numRows + Repeat2__numRows%><table width="100%" border="0" cellspacing="0" cellpadding="5">  <tr>     <td><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Neste       momento há <%=(rs_usercount.Fields.Item("total").Value)%> participante(s) e <%= Application("anonimos") %> visitante(s) anônimo(s) neste fórum.</strong></font></td>  </tr>  <tr>     <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Usuários       On Line no momento:</font></td>  </tr>  <tr>     <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">      <% While ((Repeat2__numRows <> 0) AND (NOT rs_useron.EOF)) %>      <%If (rs_useron.Fields.Item("nivel").Value) = 2 Then        Response.Write("<b><font color=#336699>"&(rs_useron.Fields.Item("login").Value)&"</font></b>")       ElseIf (rs_useron.Fields.Item("nivel").Value) = 1 Then        Response.Write("<b>"&(rs_useron.Fields.Item("login").Value)&"</b>")       Else        Response.Write((rs_useron.Fields.Item("login").Value))       End If%>      <% If NOT (Repeat2__index+1 = (rs_usercount.Fields.Item("total").Value)) Then Response.Write(", ")%>      <%   Repeat2__index=Repeat2__index+1  Repeat2__numRows=Repeat2__numRows-1  rs_useron.MoveNext()Wend%>      </font></td>  </tr></table><%rs_useron.Close()Set rs_useron = Nothing%><%rs_usercount.Close()Set rs_usercount = Nothing%>

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.