Título: Aprendendo a lógica de um contador de acesso	
Conteudo:

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

<!--

Nesta página apenas será dado o include da página contador.asp onde esta toda a programação

-->

<HTML>

<HEAD>

<TITLE>«::ASPBRASIL::»</TITLE>

</HEAD>

<BODY>

Nº de visitantes: 

<!-- #INCLUDE FILE="contador.asp" --> 

</BODY>

</HTML>

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.

	

Autor: Junior Guimarães