Ir para conteúdo

POWERED BY:

Arquivado

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

zanelati2002

Como dar um timer off

Recommended Posts

Olá amigos do forum mais uma vez venho pedir a colaboração de todos vocÊs para me ajudar é graças a vocês que a maioria dos meus scripts fiz aprendendo aqui, acontece que agora gostaria de pedir um colaboração para tentar ver o que é preciso fazer para que de certo o que quero.Tenho um sistema de usuarios online cuja o cara se loga e aparece o nome dele como logado online, acontece que se o cara não clicar em sair o nome dele não vai sair o que tenho que fazer dentro deste script já postei um post deste a mais de 2 meses sem resultado quem sabe agora eu consiga alguém que me ajude. os dados dos scripts estão abaixo.logar.asp a pagina que autentica os users para ver se exixtem ou não<%if Request.Cookies("username") = "" thenend if%><%'Grab the submitted variables (page is the page they've come from, set by the hidden variable at the login box)username = Request.Form("username")password = Request.Form("password")page = Request.Form("page")stayloggedin = Request.Form("stayloggedin")if page = "" thenpage = "index.asp"end if'Check no s**t is trying to hack in using SQL commandsif InStr(username, "'") or InStr(username, """") or InStr(username, "=") or InStr(password, "'") or InStr(password, """") or InStr(password, "=") thensqlflag = Trueend if'Open connection%><!--#include file="conn.asp"--><%'Get a recordset corresponding to the submitted username and passwordsql = "SELECT username FROM users WHERE username = '" & username & "' AND password = '" & password & "'"Set rsUser = Server.CreateObject("ADODB.Recordset")rsUser.Open sql, conn, 3, 3Set você = Server.CreateObject("ADODB.Connection")você.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("db.mdb") &";Persist Security Info=False"up = "UPDATE users SET UltimaVisita=NOW WHERE username = '" & username & "'"vvezes = "UPDATE users SET vezes=vezes+1 WHERE username = '" & username & "'"vOn = "UPDATE users SET ehmembro=1 WHERE username = '" & username & "'"'If there was a valid recordset there, then send them back to the page they came from, with the username cookie setIf (not rsUser.BOF) and (not rsUser.EOF) and sqlflag <> True thenResponse.Cookies("username") = rsUser("username")você.Execute(up)você.Execute(vvezes)você.Execute(vOn)'If the user wants to stay logged in all the time, then we'll set the cookie with a far-away expiry dateif stayloggedin = "yes" thenResponse.Cookies("username").expires = #1/1/2010#SQL = "UPDATE users (UltimaVisita) VALUES (NOW) WHERE username = '" & username & "'"set rsUser = conn.execute(SQL)você.Execute(up)você.Execute(vvezes)você.Execute(vOn)end ifrsUser.closeset rsUser = nothingconn.closeset conn = nothingResponse.Redirect(page)end if'Otherwise, display an invalid entry screenrsUser.closeset rsUser = nothingconn.closeset conn = nothing%>logado.asp onde vão aparecer os user<%Set você = Server.CreateObject("ADODB.Connection")você.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("db.mdb") &";Persist Security Info=False"vConta2="SELECT COUNT(ehmembro) AS monline FROM users WHERE ehmembro=1"Set vConta=você.Execute(vConta2)vMembros2="SELECT * FROM users WHERE ehmembro=1"Set vMembros=você.Execute(vMembros2)%><% IF vMembros.EOF THENResponse.Write "<tr><td width='100%'><p align=center font face=Verdana size=1>Nenhum membro online.</a></font></td></tr>"ELSEwhile not vMembros.EOF %><tr><td width="100%"><font face=Verdana size=1><p><font color=#3399FF> <img border="0" src="login/icons/arrow1.gif">  <a href="mailto:<%=vMembros("email")%>"><%=vMembros("username")%></a></font></td></tr></font></p><%vMembros.MoveNextWendEND IF%></table><font face=Verdana size=1><b></font></p>Total: <%=vConta("monline")%> Se alguém puder me da uma forçinha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque mais um campo para o cadastro da pessoa que logar e assimq ue ele logar você grava a data/hora que ele acessou e a cada pagina que ele navegar você vai atualizando a data/horaAi e so por no começo se a data/hora do campo do ultimoacesso for maior que 10minutor por exemplo e porque ele saiu ou parou de acessar as paginas então você desloga este usuario

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tambem faço assim tiozinhocom um campo de data hora

Compartilhar este post


Link para o post
Compartilhar em outros sites

então achei um post falando sobre isto mais da dando complito pois meu bando dados é acess e o codigo é em sql alguém pode ajudarolhem sócrei dentro da index.asp uma sub rotina<!--#include file="login/rotinas.asp"--><% Call userOffline() Call userOnline() %>depois dentro dela coloco também onde ficaram os users strSQL = "SELECT Sum(1) As Total FROM Online"Set Rs = Conexao.Execute(strSQL)IF isNull(Rs("Total")) THENResponse.Write "N/A"ELSEIF Rs("Total") = 1 THENResponse.Write "1 Usuário Online"ELSEResponse.Write Rs("Total") & " Usuários Online"END IFEND IFRs.CloseSet Rs = Nothing %>depois as rotinas.aspolhem só<% Sub userOffline() timeleft = DATEADD("n", -10, Now()) sql = "delete from online where dataacesso < " & data &"" End Sub %> <% Sub userOnline() QueryStrr = "?" & Request.ServerVariables("query_String") strSQL = "Select * From Online Where HostIP = " & Request.servervariables("REMOTE_ADDR") & "" Set Rs = Conexao.Execute(SQL) If Rs.BOF AND Rs.EOF Then Call ExecuteSQL("INSERT INTO Online(HostIP,DataAcesso,Pagina) VALUES('" & Request.servervariables ("REMOTE_ADDR") & "', '" & Data(Now()) & "', '" & Request.ServerVariables("SCRIPT_NAME") & QueryStrr & "');") Else Call ExecuteSQL("UPDATE Online SET DataAcesso = '" & Data(Now()) & "',Pagina = '" & Request.ServerVariables("SCRIPT_NAME" ) & QueryStrr & "' Where HostIP = '" & Request.servervariables("REMOTE_ADDR") & "');") End If FechaRs(Rs) End Sub %>só que da dando varios tipos de erro o que faço apra fazer o que quero alguém pode realmente me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

vai postando os erros tiozinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja so o que tenho mesmo assim esta dando errovai listar os users <%Set conexao = Server.CreateObject("ADODB.Connection")conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("teste.mdb") &";Persist Security Info=False"%><!--#include file="login/rotinas.asp"--><%online%><%strSQL = "SELECT distint ip FROM Online"Set Rs = server.CreateObject("ADODB.recordSet")Rs.open strSQL, conexao, 3, 3IF Rs.recordcount < 1 THENResponse.Write "N/A"ELSEIF Rs.recordcount = 1 THENResponse.Write "1 Usuário Online"ELSEResponse.Write Rs.recordcount & " Usuários Online"END IFEND IFRs.CloseSet Rs = Nothingresponse.Write("<br><br>")set lista_mem = conexao.execute("select DISTINCT usuario from online")while not lista_mem.eofresponse.Write("<a href='mailto:teste@teste.com'>"&lista_mem("usuario")&"</a><br>")lista_mem.movenextif not lista_mem.eof thenresponse.Write(", ")end if wend %>agora a rotinas.asp<%public sub onlineip = request.ServerVariables("REMOTE_ADDR")set online_apaga = você.execute("select * from online where hora < '"& DateAdd("n",-5, Time()) &"'")if not online_apaga.eof thenwhile not online_apaga.eofvocê.execute("delete * from online where ip='"&online_apaga("ip")&"'")online_apaga.movenextwendend ifset online_apaga2 = você.execute("select * from online where hora < '"& DateAdd("s",-3, Time()) &"' AND ip='"&ip&"'")if not online_apaga2.eof thenwhile not online_apaga2.eofvocê.execute("delete * from online where ip='"&online_apaga2("ip")&"'")online_apaga2.movenextwendend ifvocê.execute("insert into online (hora,ip,usuario) values (#" &Time() & "#,'"&ip&"',"&request.Cookies("username")&")")end subcall online%>olha o erroErro de tempo de execução do Microsoft VBScript error '800a01a8' O objeto é obrigatório: 'você' /minhas webs/login/rotinas.asp, line 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui tiozinhovocê.execute("insert into online (hora,ip,usuario) values (#" &Time() & "#,'"&ip&"',"&request.Cookies("username")&")")tente usar o nome de sua conexaoconexao.execute("insert into online (hora,ip,usuario) values (#" &Time() & "#,'"&ip&"',"&request.Cookies("username")&")")

Compartilhar este post


Link para o post
Compartilhar em outros sites

na index.asp estou usando isto<%Set conexao = Server.CreateObject("ADODB.Connection")conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("teste.mdb") &";Persist Security Info=False"%><!--#include file="login/rotinas.asp"--><%online%><%strSQL = "SELECT distint ip FROM Online"Set Rs = server.CreateObject("ADODB.recordSet")Rs.open strSQL, conexao, 3, 3IF Rs.recordcount < 1 THENResponse.Write "N/A"ELSEIF Rs.recordcount = 1 THENResponse.Write "1 Usuário Online"ELSEResponse.Write Rs.recordcount & " Usuários Online"END IFEND IFRs.CloseSet Rs = Nothingresponse.Write("<br><br>")set lista_mem = conexao.execute("select DISTINCT usuario from online")while not lista_mem.eofresponse.Write("<a href='mailto:teste@teste.com'>"&lista_mem("usuario")&"</a><br>")lista_mem.movenextif not lista_mem.eof thenresponse.Write(", ")end if wend %>esta demorando muito e da uns paus que demora muito para ver que nem vejo como que seria este codigo para mostrar os users online alguma ideia

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparece algum erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

para falar verdade demora tanto para aparecer e da um pau mais depois que coloquei este codigo esta demora muito cerca de 30 minutos para abrir esta pagina mais voce vendo este codigo percebe algo errado.. tem outro modo que eu possa fazer isto ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve ter algum erro neste seu loop tente simplifica-lo

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.