|
|
|

|

|
Dicas
|

|
ASP - Active Server Page (Miscelâneas)
|
|
 |
Título da Dica: contador de Acessos
|
 |
|
|
Postada em 17/9/2003 por larback
A gente acha por aí vários códigos prontos de contadores de acesso, embora isso muitas vezes adiante nosso trabalho, muitas vezes ficamos sem bônus intelectual, pois simplesmente copiamos. O presente artigo mais do que dar o peixe, visa ensinar a pescar... 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.
Deus seja louvado
|
|
|
|

|