Ir para conteúdo

POWERED BY:

Arquivado

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

Davide Ricardo

Visitantes Online

Recommended Posts

Boas pessoal...

 

É assim, eu queria criar um sistema de visitantes online numa pagina..Ja tentei com o global.asa, com um sistema de inserir na bd, mas nda..nada funciona correctamente..

 

Actualmente tenho uma cena em global.asa..O Problema é que podem tar mtos visitantes na pagina, mas diz sempre que so esta UM...

 

global.asa

<script language='vbscript' runat='server'>

Sub Application_OnStart

Session.Timeout= 50

Application.Lock

Application("Usuarios_OnLine") = 0

Application.UnLock

End Sub

 

Sub Application_OnEnd

End Sub

 

Sub Session_OnStart

Application.Lock

Application("Usuarios_OnLine")=Application("Usuarios_OnLine") + 1

Application.UnLock

End Sub

 

Sub Session_OnEnd

Application.Lock

Application("Usuarios_OnLine")=Application("Usuarios_OnLine") - 1

Application.UnLock

End Sub

</script>

online.asp

<b>Visitantes On-Line: <font class="branco"><%= (Application("Usuarios_OnLine")) +1 %></b></font>

Se puderem ajudar, agradecia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não recomendo fazer contador de usuários no global.asa, sempre dá bug

 

Grave o IP dos usuários e hora em um arquivo .txt, .xml ou banco de dados (ou até mesmo em Application), e coloque um include com esse código em todas as suas páginas, ou em algum q já esteja em todo o site

 

Para gravar ou verificar quem está online, faça uma contagem de IPs diferentes e em determinado tempo (eu usava 15 mins)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz exatamente como você aqui em casa e deu certinho, utilizando o global.asa.

 

Veja meu exemplo:

 

 

Global.asa

<script LANGUAGE=VBScript RUNAT=Server>Sub Session_OnStart	Session.Timeout = 5	Session("contador") = 0	Application.Lock	Application("usersON") = Application("usersON") + 1	Application.UnlockEnd SubSub Session_OnEnd	Application.Lock	Application("usersON") = Application("usersON") - 1	Application.UnlockEnd SubSub Application_OnStart	Application.Lock	Application("usersON") = 0	Application.UnlockEnd SubSub Application_OnEndEnd Sub</SCRIPT>

index.asp

<% @ LANGUAGE = VBScript %><%		response.write "F5!<BR>"						Session.Timeout = 5		Session("contador") = Session("contador") + 1		response.write "<HTML><BODY> Número de todos os acessos à página durante a sessão: "		response.write Session("contador")		response.write "<BR><BR>"		response.write "Usuarios Conectados No sistema: " & Application("usersON")%><BR><BR><a href='logout.asp'>Finalizar Sessão</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

para que é isto??..

Número de todos os acessos à página durante a sessãoresponse.write Session("contador")

Não bastava:

response.write "Usuarios Conectados No sistema: " & Application("usersON")

agradecido

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso não precisa mesmo, eu só tava fazendo um teste de quantidade de page views durante a sessão, o que você quer ta como aplicação mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

boas..olha eu so consigo colocar isso a mostrar algum valor se o index.asp tiver este response.write

Visitantes Online: <%=(Application("usersON")) + 1%>

Ou seja é a mesma coisa que eu tinha feito.,.mas nao funciona..Será que eu preciso ter alguma coisa instalada no pc do global.asa, alguma componente..sei la...??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como que você está testando isso? Deve-se abrir vários Browsers e conectar na página com cada um deles....

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu testando isso da maneira que deve ser..que é online..Ou seja eu abro uma página de internet onde contem esse ficheiro do global.asa e do index.asp (online.asp), e depois peço a alguem que abra tb a mesma página..ou seja supostamente devia aparecer dois visitantes online, mas so aparece um...o endereço actual é: www.davidericardo.net/tunadaoAgora até mostra (-1)..como é possivel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É por isso que falei que o Global.asa dá bugQuando você colocar essa aplicação no ar, vai perceber que de o número de usuarios no seu site vai ser diferente do real (em alguns casos a diferença será enorme)Prefira o uso de BD ou .txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois parceiro..mas o problema é que eu ja tentei em bd, mas nao tava a conseguir po-lo a funcionar..por isso pedi que fosse sem o global.asa...Porque ja testei n vezes e nda..nao percebo, com os outros funciona comigo nao..ou seja o problema tem que ser meu..mas nao consigo resolver,..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diga o por quê não conseguiu fazer funcionar o sistema com BD, o povo aqui pode ajudar, já que é um assunto já muito discutido por aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo se for com BD ou TXT, de qualquer forma num vai precisar usar o global.asa pra colokar no session "onStar" ???Ou vai colokar um include em todas as paginas do site que vai conferir no BD se o usuario esta logado se não estiver loga ele e adiciona mais um usario ao contador ???Putz axo q num vai ser igual eu disse ai em cima não neh, pq sei la axo q num ia ser muito funcional nao pq ia fikar fazendo consulta no BD quase toda hora... sei la !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha quando fiz umas cenas por base de dados, aqui vao os exemplos que fiz:

 

visitas.asp

<!--#include file="config.asp"-->

<%

set conta_visitas = Conexao.execute("SELECT * FROM contador")

 

IF NOT Session("on") = TRUE THEN

Conexao.Execute("UPDATE contador SET visitas='"& conta_visitas("visitas")+1 &"'")

Session("on") = TRUE

Session.TimeOut = 30

END IF

 

Response.Write " "& conta_visitas("visitas")%>

tb tive assim:

 

<%

stringConexao = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & Server.MapPath("basedados.mdb")

Set conn = Server.CreateObject("ADODB.Connection")

conn.Open stringConexao

 

' cria a conexão com a base de dados

tempo = DateAdd("n", -1, time)

tempo = FormatDateTime(tempo, 4)

 

' define o tempo limite como 1 minuto antes do horário actual

ipusuario = Request.ServerVariables("REMOTE_ADDR")

 

' define a variável ipusuario como o ip do visitante

strsql = "delete from online where hora < '"& tempo &"'"

conn.execute(strsql)

 

' apaga da base de dados os registos que já esgotaram seu tempo limite

strsql = "select * from online where ip='"& ipusuario &"'"

set RS = conn.execute(strsql)

 

' cria o recordset para verificar se o visitante já está na base de dados

if not RS.EOF then

strsql = "update online set hora='"& FormatDateTime(time, 4) &"' where ip='" & ipusuario &"'"

 

' se o visitante já estiver na base de dados, actualiza o registo com o horário actual

else

strsql = "insert into online (hora,ip) values ('"& FormatDateTime(time, 4) &"','"& ipusuario &"')"

 

' se o visitante não estiver na base dados, insere o registo com o ip do visitante e o horário actual

end if

conn.execute(strsql)

RS.Close

strsql = "select count(*) from online"

set RC = conn.execute(strsql)

 

' cria o recordset com a contagem de registos na base de dados (quantidade de visitantes online)

response.write "<b>Visitantes online:</b> "& RC(0)

RC.Close

%>

e assim tb:

 

<%AbreConexao()

 

ip = request.servervariables("REMOTE_ADDR")

data = day(now)&"/"&month(now)&"/"&year(now)

sql = "select * from contador where ip = '"&ip&"'"

set rs = conexao.execute(sql)

if rs.eof then

sql2 = "insert into contador(ip,visitas,data) values('"&ip&"',1,'"&data&"')"

conexao.execute(sql2)

else

if (strcomp(rs("data"),data,1)= 0) then

sql3 = "update contador set visitas = visitas + 1 where ip = '"&ip&"'"

conexao.execute(sql3)

else

sql4 = "insert into contador(ip,visitas,data) values('"&ip&"',1,'"&data&"')"

conexao.execute(sql4)

end if

end if

%>

 

<%'Verificando se o ip do visitante existe no BD:

ip = request.servervariables("REMOTE_ADDR")

view1 = "select * from contador where ip ='"&ip&"'"

set view = conexao.execute(view1)

 

'Caso não exista ele vai inserir o IP:

if view.eof then

insert = "insert into contador (ip, vezes) values ('"&ip&"','1')"

set inserindo = conexao.execute(insert)

 

'Se não for a primeira vez dele no site, vamos aumentar a quantidade de visitas dele ao site:

else

do while not view.eof

view2 = "select * from contador where ip ='"&ip&"'"

set bu = conexao.execute(view2)

exit do

loop

update = "update contador set vezes = vezes + 1 where ip = '"&ip&"' "

set actualiza = conexao.execute(update)

end if

%>

 

<table width="100%" cellpadding="0" cellspacing="0" border="0" bordercolor="#FFFFFF">

<tr>

<td valign=top colspan=3 align="center" class="main"><b>Total de Visitas: </b><%=rs("visitas")%></td>

</tr>

e ainda mais outro exemplo:

<%

if session("Visitas")="" or session("Visitas")=0 or session("ip")="" or session("ip")=0 or session("ip")<>Request.ServerVariables("REMOTE_ADDR") or session("id")="" or session("id")=0 or session("id")<>session.SessionID then ' Verifica se o usuário já foi contado, evita que seja contado com um refresh

 

set conn = server.createObject("ADODB.Connection")

conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("basedados.mdb") & ";"

sql="select Top 1 * from Contador order by Visitas desc" 'Seleciona o ultimo visitante

Set Contador = server.CreateObject("ADODB.RecordSet")

Contador.Open sql,conn,3,3

 

Visitas=cint(cint(Contador("Visitas"))+1)

session("Visitas")=Visitas

session("IP")=Request.ServerVariables("REMOTE_ADDR")

session("ID")=session.SessionID

 

Contador.addnew

Contador("Visitas")=cint(Visitas)

Contador("IP")=session("IP")

Contador("ID")=session("ID")

Contador.update

 

Contador.Close

set Contador= nothing

conn.Close

set conn= nothing

end if

%>

 

Visitas: <%=session("Visitas")%>

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.