Aprendendo a lógica de um contador de acesso Código comentado: Esses códigos são referentes a um contador de acesso à Páginas Web. Siga passo a passo e no final você verá uma breve explicação sobre a lógica dos processos realizados abaixo. ABAIXO SEGUE A PROGRAMAÇÃO DE: contador.asp <% 'Declara as variáveis Dim Conn, RsQuery, Pagina, Counter 'Atribui o endereço da página atual a uma variável (Pagina) Pagina = Request.ServerVariables("SCRIPT_NAME") 'Atribui a variável Conn uma instancia do objeto Connection 'ou seja, a variável passa a propriedade de conexão Set Conn = Server.Createobject("ADODB.Connection") 'Abre a conexão com o banco de dados usando o Server.MapPath, que localiza o banco com esse nome 'apenas dentro do mesmo diretório Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("contador.mdb") 'Verifica se a Session Pagina ja contem algum valor, no caso o valor (visitada) If Len(Session(Pagina)) = 0 Then 'Atribui a variável RsQuery a consulta executada no banco de dados Set RsQuery = Conn.Execute("SELECT * FROM acesso") 'Atribui a variável Counter o valor atual de visitas Counter = RsQuery("acesso")+1 'Atribui a variável RsQuery a atualização feita no banco de dados 'Repare que desta maneira você pode usar esse Banco de Dados para várias páginas 'porque apenas será atualizada linha que corresponde a (url = '" & Pagina & "') 'url é o endereço atual Set RsQuery = Conn.Execute("UPDATE acesso SET acesso = " & Counter & " WHERE url = '" & Pagina & "'") 'Atribui a Session(Pagina) o valor "visitada", onde só será contado como uma nova visita quando a sessão for encerrada (a sessão se encerra após 20 minutos de página estática, ou ao fechar o browser) Session(Pagina) = "visitada" 'Caso a Session Pagina não contenha o valor (visitada), será contado como mais uma visita Else 'Atribui a variável RsQuery a consulta atualização feita no banco de dados Set RsQuery = Conn.Execute("SELECT * FROM acesso WHERE url = '" & Pagina & "'") 'Atribui a variável Counter recebe o número de visitas Counter = RsQuery("acesso") 'Fecha o conexão com o banco de dados End If 'Fecha o conexão com o banco de dados Conn.Close 'Caso a Session Pagina não contenha o valor (visitada), será contado como mais uma visita Set Conn = Nothing 'É impresso o total de visitas Response.Write Counter %> FIM DE: contador.asp ABAIXO SEGUE A PROGRAMAÇÃO DE: inicial.asp «::ASPBRASIL::» Nº de visitantes: FIM DE: inicial.asp ABAIXO SEGUE O COMENTÁRIO DA LÓGICA DOS PROCESSOS: Vamos verificar o que ocorre com os processos quando um usuário visita sua página: Ao carregar a página a Sessão Pagina recebe o valor "visitada". Com isso, quando o usuário atualizar a página ou voltar a página inicial o contador permanecerá com o mesmo número de acesso e só passará a contar mas um a partir do momento em que expirar a sessão do usuário ou o Browser for fechado. No processo acima nós temos duas condições: A 1ª é a condição em que o usuário entra pela primeira vez na sua página, com isso é aberta uma conexão com a Base de Dados e é registrada mais uma visita e a sessão Pagina recebe o valor "visitada". A 2ª é a condição em que o usuário já esta na página e apenas é verificado o valor da sessão, caso a sessão contenha o valor "visitada" não é aberta e conexão com a Base de Dados e apenas é apresentado o valor de "Counte" que é a variável que contém o número de visitas atuais, caso não contenha valor nenhum é processada primeira condição. Faça download dos códigos e da Base de Dados na Área de Transferência.