- ASP Básico
- Implementando um contador em suas páginas
ASP
-
- Que tal um contador em sua página para indicar o número
de acessos ? É bem mais simples do que você pensa.
Vamos usar um arquivo texto para armazenar o número de
acessos e incrementá-lo a cada requisição do usuário
á nossa página.
-
- As etapas envolvidas são as seguintes:
-
- 1-) Criamos o objeto que permite o acesso a arquivos.
Usamos o componente FileSystemObject. (Poderiamos
ter usado um banco de dados)
-
- 2-) Criamos um arquivo texto para armazenar o valor do
contador. Fazemos isso usando o nome do arquivo de script
acrescido da extensão .cnt.
3-) A cada requisição da página pelo usuário abrimos o
arquivo lendo o seu conteúdo e incrementando o valor de uma
unidade
- 4-) Se o arquivo não existir iniciamos o contador do
zero( iconta := 0)
5-) A seguir atribuímos o valor a uma variável
iconta.
- 6-) Fechamos os objetos e visualizamos o valor do
contador.
-
- O código script do arquivo contador.asp é
dado a seguir
<%
' Declarando as variaveis usadas
Dim objFSO, objContador ' variável de acesso a arquivos (FileSystemObject ) e objeto contador
Dim strArqTexto ' nome do arquivo texto
Dim iConta ' variavel que incrementa o contador
Dim I ' variavel usada no loop
' Monta o nome do arquivo texto com extensão .cnt a partir do nome do arquivo de script
strArqtTexto = Server.MapPath(Request.ServerVariables("SCRIPT_NAME") & ".cnt")
'Cria o objeto de acesso ao arquivo texto
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
' Abre o arquivo texto
Set objContador = objFSO.OpenTextFile(strArqTexto, 1, True)
' Le o conteudo atual do arquivo texto
If Not objContador.AtEndOfStream Then
' determina o valor do contador
iConta = CLng(objContador.ReadAll)
Else
' se o arquivo nao existe inicia com zero
iConta = 0
End If
' Fecha o arquivo e destroi o objeto
objContador.Close
Set objContador = Nothing
' incrementa o contador
iConta = iConta + 1
' Sobrescreve o arquivo texto existente
Set objContador = objFSO.CreateTextFile(strArqTexto, True)
' Salva e Atualiza o contador
objContador.Write iConta
' fecha e destroi o objeto
objContador.Close
Set objContador = Nothing
' Destroi o objeto FSO
Set objFSO = Nothing
escreve o numero de acessos
Response.Write iConta
%>
|
- Podemos implementar o script acima usando a diretiva
include em uma página ASP. A sintaxe é dada a seguir:
<!-- #INCLUDE FILE="contador.asp" -->
Iremos aproveitar o exemplo anterior e incluir o arquivo contador.asp usando a diretiva include. O ínicio do script já com a diretiva include fica assim:
<html>
<head>
<TITLE>paginando.asp</TITLE>
</head>
<body bgcolor="#FFFFFF">
<!--#INCLUDE VIRTUAL="\ADOVBS.INC" -->
<!--#INCLUDE FILE="contador.asp" -->
<%
...
...
...
%>
<hr>
<b>Numero total de registros no Recordset <%=contador%></b><br>
<b>Numero de Acessos a esta página : <%=iconta%></b>
</BODY>
</HTML>
O resultado do processamento deste script é o seguinte:
- Implementando um contador de páginas
usando um banco de dados
-
- Vamos fazer o mesmo serviço feito no exemplo anterior ,
com uma diferença, vamos usar um banco de dados para
armazenar o nome da página e o número de acessos que a
mesma recebeu. Pode parecer um exagero usarmos um banco
de dados para tal tarefa , afinal a utilização de
componentes COM consome mais recursos do servidor, mas
você pode pensar em um arquivo para estatísticas para
justificar o exagero:
-
- Os arquivos usados neste exemplo são:
-
- 1-) contador.mdb Um banco de dados para
armazenar o nome da página e número de acessos. A
tabela acessos , contida em contador.mdb, possui a
seguinte estrutura:
- Percebemos que a tabela acessos possui os seguintes
campos:
a -) n_acessos ( Tipo Número ) que irá armazenar o
número de acessos da página
- b-) pagina ( Tipo texto ) irá armazenar o nome da
página
-
- 2-) contador_db.asp O arquivo de script Asp
onde temos o código que acessa o banco de dados
contador.mdb , e, usando uma instrução SQL abre a
tabela acessos e incrementa o contador toda vez que a
página for acessada.
- <%
- ' Usando uma função evitamos
o conflito com nome de variaveis que
- ' porventura o usuario esteja
usando em seu codigo
- Function Retorna_Acessos()
- variáveis ADO
- Const adOpenKeyset = 1
- Const adLockPessimistic = 2
- Const adCmdText = &H0001
-
- ' Variáveis locais
- Dim strArquivo
- Dim strSQL
- Dim rsContador
- Dim iContador
-
- ' cria uma consulta SQL usando
o nome do script
- strArquivo =
Request.ServerVariables("SCRIPT_NAME")
- strSQL = "SELECT pagina,
n_acessos FROM acessos WHERE pagina='" &
strArquivo & "';"
-
- ' abre um recordset
- Set rsContador =
Server.CreateObject("ADODB.Recordset")
-
- ' acesso a uma base de dados
Access
- rsContador.Open strSQL, _
- "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" &
Server.MapPath("contador.mdb") &
";", adOpenKeyset, adLockPessimistic,
adCmdText
-
- 'Se não existe registro ainda
vamos incluir um registro
- If rsContador.EOF Then
- rsContador.AddNew
- iContador = 0
- rsContador.Fields("pagina").Value
= strArquivo
- Else
- 'Se já existe registro le o
registro a atualiza o contador
- rsContador.MoveFirst
- iContador =
rsContador.Fields("n_acessos").Value
- End If
-
- ' incrementa o contador e
atualiza a base de dados
- rsContador.Fields("n_acessos").Value
= iContador + 1
- rsContador.Update
-
- ' fecha a conexao
- rsContador.Close
- Set rsContador = Nothing
-
- ' retorna o contador
- Retorna_Acessos = iContador + 1
- End Function
- %>
|
- 3-) pagina1.asp Uma página script de
exemplo onde usamos a instrução INCLUDE- para
incluir o arquivo de script contador_db.asp
- <!-- #INCLUDE
FILE="contador_db.asp" -->
- <html>
- <head>
- <title>Pagina
Um</title>
- </head>
- <body>
- A << PAGINA UM >> ja
teve <%= Retorna_acessos() %>
- acessos
- </body>
- </html>
|
- 4-) pagina2.asp - Outra página de script de
exemplo onde usamos a instrução INCLUDE- para
incluir o arquivo de script contador_db.asp
- <!-- #INCLUDE
FILE="contador_db.asp" -->
- <html>
- <head>
- <title>Pagina
Dois</title>
- </head>
- <body bgcolor="white"
text="blue">
- A << PAGINA DOIS >> ja
teve <%= Retorna_acessos() %>
- Acessos
- </body>
- </html>
|
- A contagem é feita pelo arquivo
contador_db.asp que é incluido nas páginas que desejamos controlar o número
de acessos. Cada vez que acessamos a pagina1.asp ou
a página2.asp o contador é incrementado as
informações armazenadas na tabela acessos do banco de
dados contador.mdb. As figuras a seguir ilustram
O arquivo contador_db.asp é uma função que retorna o
número de acesso para a página sendo visitada. Para ativar a
função basta usar a instrução
- <%=
Retorna_acessos() %> na página que
desejamos controlar.
A gravação é feita usando os métodos
Addnew/Update da ADO
e a instrução SQL usada é a seguinte:
- "SELECT pagina, n_acessos FROM
acessos WHERE pagina='" & strArquivo &
"';"
-
- Onde temos que selecionar (SELECT) a página e o número
de acessos da tabela (FROM) acessos onde a pagina for
igual a variável strArquivo que armazena o nome do
arquivo de script sendo executado.
E estamos conversados , até o próximo artigo da
série ASP Básico...
- José Carlos Macoratti