Ir para conteúdo

POWERED BY:

Arquivado

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

arldin

Uma em um contador de usuario online

Recommended Posts

Boa noite amigos eu pequei esta tutoria de contador de usuario on line mais tenho pouco conhecimento para desenvolve-la

Alguem pode me da uma ajuda

Seque abaixo

 

Dados

 

muito mais confiável do que o sistema utilizando Global.asa.

 

Eu irei utilizar ASP / MySQL porém pode ser utilizado ASP / Access.

 

Iremos primeiro criar a tabela no MySQL chamada Online com os seguintes

 

campos:

 

 

Campo - Tipo - Tamanho

-----------------------------------

ID - INT - 10

HostIP - VARCHAR - 20

DataAcesso - DATETIME

Pagina - TEXT

 

Feito este campos será necessário indicar os code e as subrotinas da páginas a

 

serem acessadas.

 

view_online.asp

strSQL = "SELECT Sum(1) As Total FROM Online"

Set Rs = Conexao.Execute(strSQL)

 

IF isNull(Rs("Total")) THEN
 Response.Write "N/A"
ELSE
 IF Rs("Total") = 1 THEN
   Response.Write "1 Usuário Online"
 ELSE
   Response.Write Rs("Total") & " Usuários Online"
 END IF
END IF

Rs.Close
Set Rs = Nothing

PS: Conexão você deve utilizar a seguinte linha para conexao

 

Set Conexao = Server.CreateObject("ADODB.Connection")
 Conexao.Open 

"driver={MySQL};DATABASE=nome_do_banco;SERVER=ip_servidor;UID=usuario_d

o_banco;PASSWORD=senha_do_banco"

O arquivo <!--#include file="view_online.asp" -->

deverá ser colocado como include no local onde ira

mostrar a quantidade de´usuários online.

 

Agora iremos montar as duas subrotinas que irão verificar quem está online e

 

adicionar os offline após alguns minutos sem acesso.

 

Você deverá colocar este código no começo de todas as paginas ou uma include

 

que é chamada em todas as páginas.

 

Call userOffline()
Call userOnline()

Agora iremos montar a subrotina userOffline() que irá ser responsavel para verificar

 

se o visitante ainda está no site ou ja saiu.

 

Sub userOffline()

 ' UPDATE todos os usuários do Online após 10 minutos
 timeleft = DATEADD("n", -10, Now())
 Call ExecuteSQL("DELETE FROM Online WHERE DataAcesso < '"& 

DataMySQL(timeleft) &"';")
End Sub

Ele irá pegar todos os registros da tabela que tenha o ultimo acesso por mais de 10

 

minutos e ira deletar ou seja

Digamos que você acesse o site as 10 horas porem sai as 10:05 e o site não tem

 

como saber se você saiu ou não por isso se as 10:16 você não tiver mais visitado

 

nenhuma página ele ira colocar você como offline

 

 

Agora iremos montar a subrotina userOnline() que irá ser repsonsavel para atualizar

 

na tabela Online a data do ultimo acesso a páginas do site, pois ai o sistema irá

 

saber que você ainda esta navegando no site.

 

Sub userOnline()


QueryStrr = "?" & Request.ServerVariables("query_String")

strSQL = "Select * From Online Where HostIP = '" & 

Request.servervariables("REMOTE_ADDR") & "'"
Set Rs = Conexao.Execute(strSQL)
If Rs.BOF AND Rs.EOF Then
Call ExecuteSQL("INSERT INTO 

Online(HostIP,DataAcesso,Pagina) VALUES('" & 

Request.servervariables("REMOTE_ADDR") & "', '" & DataMySQL(Now()) & "', '" & 

Request.ServerVariables("SCRIPT_NAME") & QueryStrr & "');")
Else
Call ExecuteSQL("UPDATE Online SET DataAcesso = '" & 

DataMySQL(Now()) & "',Pagina = '" & Request.ServerVariables("SCRIPT_NAME") & 

QueryStrr & "' Where HostIP = '" & Request.servervariables("REMOTE_ADDR") & 

"';")
End If

FechaRs(Rs)

End Sub

Na variavel QueryStrr ele ira pegar o valor da pagina com querystring ou seja muitos

 

programadores utilizando páginas da seguinte forma

 

index.asp?link=cadastro&cat=jogos e se não tiver isso a página sempre seria grava

 

como index.asp

 

Verificamos se o numero ip ( que é pode onde iremos identificar cada usuário, porém

 

você pode trocar por id caso seje um página de acesso restrito ) se aquele ip esta ja

 

na tabela como online , se tiver ele irá apenas atualizar a data atual pra dizer que

 

está ativo no sistema, caso não tiver o ip ele ira adicionar um novo registro na tabela.

 

No campo pagina ele ira atualizar ou irá adicionar a página que o visitante está

 

online, depois você pode faezr uma pagina para mostrar quantos usuários estão

 

online, ou quem sabe as páginas mais visitas, etc..

 

Agora irei explicar algumas funções que acho necessário no code.

Estas funções eu utilizo num arquivo chamado db onde tem algumas funções que julgo necessário e não preciso ficar remontando vários code sendo que já tenho as funções prontas.

 

A primeira é a DataMySQL é para transformar a data no formato yyyy/mm/dd hh:nn:ss que é o formato do mySQL.

 

A segunda é a ExecuteSQL é apenas um função que utilizo para executar um Insert, Update ou Delete

 

Function DataMySQL(sData)

 sMes	= Month( sData )
 sDia	= Day( sData )
 sHoras	= Hour( sData )
 sMinutos  = Minute( sData )
 sSegundos  = Second( sData )

 If sMes <= 9 Then sMes = "0" & sMes
 If sDia <= 9 Then sDia = "0" & sDia
 If sHoras <= 9 Then sHoras = "0" & sHoras
 If sMinutos <= 9 Then sMinutos = "0" & sMinutos
 If sSegundos <= 9 Then sSegundos = "0" & sSegundos
 
 DataMySQL = Year(sData) & "-" & sMes & "-" & sDia & " " & sHoras & ":" 

& sMinutos & ":" & sSegundos

End Function

Sub ExecuteSQL(xstrSQL)
 Conexao.Execute(xstrSQL)
End Sub

O que eu não estou consequindo e

Fazer a tabela e a ligação com ela

Desde ja agradeço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite amigos eu pequei esta tutoria de contador de usuario on line mais tenho pouco conhecimento para desenvolve-la

Alguem pode me da uma ajuda

Seque abaixo

 

Dados

 

muito mais confiável do que o sistema utilizando Global.asa.

 

Eu irei utilizar ASP / MySQL porém pode ser utilizado ASP / Access.

 

Iremos primeiro criar a tabela no MySQL chamada Online com os seguintes

 

campos:

 

 

Campo - Tipo - Tamanho

-----------------------------------

ID - INT - 10

HostIP - VARCHAR - 20

DataAcesso - DATETIME

Pagina - TEXT

 

Feito este campos será necessário indicar os code e as subrotinas da páginas a

 

serem acessadas.

 

view_online.asp

strSQL = "SELECT Sum(1) As Total FROM Online"

Set Rs = Conexao.Execute(strSQL)

 

IF isNull(Rs("Total")) THEN
 Response.Write "N/A"
ELSE
 IF Rs("Total") = 1 THEN
   Response.Write "1 Usuário Online"
 ELSE
   Response.Write Rs("Total") & " Usuários Online"
 END IF
END IF

Rs.Close
Set Rs = Nothing

PS: Conexão você deve utilizar a seguinte linha para conexao

 

Set Conexao = Server.CreateObject("ADODB.Connection")
 Conexao.Open 

"driver={MySQL};DATABASE=nome_do_banco;SERVER=ip_servidor;UID=usuario_d

o_banco;PASSWORD=senha_do_banco"

O arquivo <!--#include file="view_online.asp" -->

deverá ser colocado como include no local onde ira

mostrar a quantidade de´usuários online.

 

Agora iremos montar as duas subrotinas que irão verificar quem está online e

 

adicionar os offline após alguns minutos sem acesso.

 

Você deverá colocar este código no começo de todas as paginas ou uma include

 

que é chamada em todas as páginas.

 

Call userOffline()
Call userOnline()

Agora iremos montar a subrotina userOffline() que irá ser responsavel para verificar

 

se o visitante ainda está no site ou ja saiu.

 

Sub userOffline()

 ' UPDATE todos os usuários do Online após 10 minutos
 timeleft = DATEADD("n", -10, Now())
 Call ExecuteSQL("DELETE FROM Online WHERE DataAcesso < '"& 

DataMySQL(timeleft) &"';")
End Sub

Ele irá pegar todos os registros da tabela que tenha o ultimo acesso por mais de 10

 

minutos e ira deletar ou seja

Digamos que você acesse o site as 10 horas porem sai as 10:05 e o site não tem

 

como saber se você saiu ou não por isso se as 10:16 você não tiver mais visitado

 

nenhuma página ele ira colocar você como offline

 

 

Agora iremos montar a subrotina userOnline() que irá ser repsonsavel para atualizar

 

na tabela Online a data do ultimo acesso a páginas do site, pois ai o sistema irá

 

saber que você ainda esta navegando no site.

 

Sub userOnline()


QueryStrr = "?" & Request.ServerVariables("query_String")

strSQL = "Select * From Online Where HostIP = '" & 

Request.servervariables("REMOTE_ADDR") & "'"
Set Rs = Conexao.Execute(strSQL)
If Rs.BOF AND Rs.EOF Then
Call ExecuteSQL("INSERT INTO 

Online(HostIP,DataAcesso,Pagina) VALUES('" & 

Request.servervariables("REMOTE_ADDR") & "', '" & DataMySQL(Now()) & "', '" & 

Request.ServerVariables("SCRIPT_NAME") & QueryStrr & "');")
Else
Call ExecuteSQL("UPDATE Online SET DataAcesso = '" & 

DataMySQL(Now()) & "',Pagina = '" & Request.ServerVariables("SCRIPT_NAME") & 

QueryStrr & "' Where HostIP = '" & Request.servervariables("REMOTE_ADDR") & 

"';")
End If

FechaRs(Rs)

End Sub

Na variavel QueryStrr ele ira pegar o valor da pagina com querystring ou seja muitos

 

programadores utilizando páginas da seguinte forma

 

index.asp?link=cadastro&cat=jogos e se não tiver isso a página sempre seria grava

 

como index.asp

 

Verificamos se o numero ip ( que é pode onde iremos identificar cada usuário, porém

 

você pode trocar por id caso seje um página de acesso restrito ) se aquele ip esta ja

 

na tabela como online , se tiver ele irá apenas atualizar a data atual pra dizer que

 

está ativo no sistema, caso não tiver o ip ele ira adicionar um novo registro na tabela.

 

No campo pagina ele ira atualizar ou irá adicionar a página que o visitante está

 

online, depois você pode faezr uma pagina para mostrar quantos usuários estão

 

online, ou quem sabe as páginas mais visitas, etc..

 

Agora irei explicar algumas funções que acho necessário no code.

Estas funções eu utilizo num arquivo chamado db onde tem algumas funções que julgo necessário e não preciso ficar remontando vários code sendo que já tenho as funções prontas.

 

A primeira é a DataMySQL é para transformar a data no formato yyyy/mm/dd hh:nn:ss que é o formato do mySQL.

 

A segunda é a ExecuteSQL é apenas um função que utilizo para executar um Insert, Update ou Delete

 

Function DataMySQL(sData)

 sMes	= Month( sData )
 sDia	= Day( sData )
 sHoras	= Hour( sData )
 sMinutos  = Minute( sData )
 sSegundos  = Second( sData )

 If sMes <= 9 Then sMes = "0" & sMes
 If sDia <= 9 Then sDia = "0" & sDia
 If sHoras <= 9 Then sHoras = "0" & sHoras
 If sMinutos <= 9 Then sMinutos = "0" & sMinutos
 If sSegundos <= 9 Then sSegundos = "0" & sSegundos
 
 DataMySQL = Year(sData) & "-" & sMes & "-" & sDia & " " & sHoras & ":" 

& sMinutos & ":" & sSegundos

End Function

Sub ExecuteSQL(xstrSQL)
 Conexao.Execute(xstrSQL)
End Sub

O que eu não estou consequindo e

Fazer a tabela e a ligação com ela

Desde ja agradeço a todos

 

Veja se é isto o que voce quer.

Acesse o site: www.intravisa.com

Login: Administrador

Senha: 123456

 

Para ver os REgistros vá para Administrador, Acessos.

 

Se precisar tenho os códigos. Passe o e-mail que te enviou os Códigos e o BD.

 

Valeu

 

 

Célido

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.