Desenvolvimento - ASP

Contador de acessos com imagens

Mostra passo-a-passo como criar e configurar um contador de acessos em ASP, que em vez de exibir os números em texto, exibe com imagens. Com bd Access ou arquivo de texto (File System Object).

por Dimas Pante



Bom, primeiramente vou explicar exatamente o que faz este código: é um contador de acessos, que grava os acessos em um banco de dados Access, ou em um arquivo de texto (os dois tipos serão explicados) e exibe não um simples texto, mas imagens, como você vê nos sites que possuem o serviço de contador.

* Para você entender melhor os códigos, coloquei vários comentários. Depois é recomendável que você os exclua, pois estas simples linhas ocupam bastante espaço na sua página, quando visualizada na internet.

Para baixar os arquivos deste tutorial, clique aqui.

Com Access
Com arquivo de texto

Para criar o contador com o banco de dados em ACCESS, o jeito mais fácil é dividindo as funções. Crie uma página chamada funcoes.asp e uma chamada default.asp. Crie também uma pasta chamada dados, e dentro dela, o arquivo do Access: acessos.mdb.

No Access, crie o arquivo chamado acessos.mdb e crie uma tabela que vai se chamar acessos. Nesta tabela, temos dois campos:
cod (Chave primária) - Tipo: Numeração automática;
contador - Tipo: texto.

Agora, na página funcoes.asp, você vai inserir o seguinte (em vermelho, o código ASP e em cinza os comentários):

<%
"--usa as configurações do Brasil
Session.LCID = 1046

"--gera acesso no bd
Public Function Acessos()

"--primeiro conecta pra buscar o valor que já tem
Set conexao = Server.CreateObject("ADODB.Connection")
"--aqui você define a pasta onde vai estar o banco, no meu caso, estará na pasta dados
conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("dados/acessos.mdb")

sql2 = "SELECT * FROM acessos"
Set rs = conexao.Execute(sql2)

"--aqui a variável contador recebe o valor do banco
contador = rs("contador")
"--se o contador for novo, coloca o valor 0 pra ele
if contador = "" then
contador = 0
end if
"--agora acresce 1 ao valor que já tinha
contador = contador + 1

"--e atualiza o novo valor. Note o WHERE cod = 1 - usamos somente um campo e uma linha
SQL = "UPDATE acessos SET contador = ""&contador&"" WHERE cod = 1"
conexao.Execute(SQL)

"--fecha as conexões e a função
conexao.close
set conexao = nothing
End Function
%>

Agora, iremos para a página default.asp. Nela, você vai chamar a página funcoes.asp, criar a conexão com o bd e a função que exibe as imagens. Coloque o código a seguir antes da tag <html>, na primeira linha da sua página:

<%@LANGUAGE="VBSCRIPT"%>
<!--#INCLUDE FILE="funcoes.asp"-->
<%
"--chama a função que grava o acesso
Acessos()

"--conecta ao access
Set conexao = Server.CreateObject("ADODB.Connection")
conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("dados/acessos.mdb")

"--agora seleciona o que tiver na tabela (o asterisco significa que tudo lá vai ser pego)
sql3 = "SELECT * FROM acessos"
Set conta = conexao.Execute(sql3)

"--a variável Contar recebe o valor que tem no banco
Contar = conta("contador")

"--e criamos a função PegarImg, que vai escrever o conteudo do bd como uma imagem
Function PegarImg(Contar)
"--verifica quantos caracteres existem no campo pra dividir com a função Mid()
For numero = 1 to Len(Contar)
"--depois, escreve os números com imagens (que você deve ter, no caso, dentro da pasta imagens)
"--a sintaxe da função Mid() é: Mid(variável, índice, e número de caracteres que deve pegar)

Response.Write "<img src=imagens/" & Mid(Contar,numero,1) & ".gif>"
"--recomeça até chegar ao limite do Len(Contar)
Next
"--e fecha a função
End Function
%>

Depois, para escrever o contador na página, você deve colocar o seguinte código (em qualquer lugar da página, desde que dentro do <body> e </body>):

<%=PegarImg(Contar)%>

E, no fim da página você deve inserir o código que fecha o banco de dados, para evitar overflow

<%
conexao.close
Set conexao = nothing
%>

Criar o contador com o um ARQUIVO DE TEXTO é mais ágil, mas você deve ter a classe File System Object ativada para ler e escrever no seu servidor e deve também ter permissões irrestritas na pasta onde estiverem as páginas. Crie então uma página chamada default.asp. Crie também um arquivo de texto chamado contar.txt. Abra-o e digite o número 1.

Na primeira linha da página default.asp, digite:

<%@LANGUAGE="VBSCRIPT"%>
<%
"--Deve usar a classe File System Object
"--Aqui vai criar a conexão com a classe

Set objeto = Server.CreateObject("Scripting.FileSystemObject")

"--fica mais fácil chamar o arquivo pelo MapPath, pra não haverem erros de localização
obj = Server.MapPath("contar.txt")

"--lugar onde está o arquivo de texto
Set arquivo = objeto.OpenTextFile(obj)

"--agora lê o número que tem no arquivo de texto (da primeira vez o valor é 1, como colocado antes)
velho = CLng(arquivo.ReadLine)

"--agora pode fechar o arquivo
arquivo.Close

"--acresce 1 ao antigo valor e gera uma nova variável
novo = velho + 1

"--abre o arquivo pra sobrescrever o que já tinha nele
Set arquivo = objeto.OpenTextFile(obj,2,true)

"--e agora sim sobrescreve :)
arquivo.WriteLine(novo)

"--e novamente fecha o arquivo
arquivo.Close

"--verifica o valor pra usar as imagens
Contar = novo

"--e criamos a função PegarImg, que vai escrever o conteudo do bd como uma imagem
Function PegarImg(Contar)
"--verifica quantos caracteres existem no campo pra dividir com a função Mid()
For numero = 1 to Len(Contar)
"--depois, escreve os números com imagens (que você deve ter, no caso, dentro da pasta imagens)
"--a sintaxe da função Mid() é: Mid(variável, índice, e número de caracteres que deve pegar)

Response.Write "<img src=imagens/" & Mid(Contar,numero,1) & ".gif>"
"--recomeça até chegar ao limite do Len(Contar)
Next
"--e fecha a função
End Function
%>

Depois, para escrever o contador na página, você deve colocar o seguinte código (em qualquer lugar da página, desde que dentro do <body> e </body>):

<%=PegarImg(Contar)%>

Para baixar os arquivos deste tutorial, clique aqui.

Dimas Pante

Dimas Pante