Nedanstående script består av en klass som lämpligen läggs i en separat fil och inkluderas mha SSI i de filer där den används samt en exepelfil som använder klassen.
Observera att klassen innehåller två funktioner. En för att räkna upp räknarvärdet med 1, samt en för att bara läsa av räknarvärdet utan att räkna upp.
' Klassfilen (counter.asp)...
<%
' En class som räknar träffar av Razor (Lars Jonsson), www.razorsedge.nu, razors.edge@swipnet.se
Class HitCounter
' Deklarationer.
Private objCounterFile
Private objReadCounterFile
Private objWriteCounterFile
Private strCounterFile
Private intCounterHits
' Funktionen för att räkna upp och läsa av besöksräknaren.
Public Function CountHit(strCounterFile)
' Skapar ett filsystemsobjekt.
Set objCounterFile = Server.CreateObject("Scripting.FileSystemObject")
' Skapar ett textfilsobjekt för läsning.
Set objReadCounterFile = objCounterFile.OpenTextFile(strCounterFile, 1, True)
' Om filen är tom skall räknarens startvärde vara 0.
' Endast sista raden i filen räknas.
If Not objReadCounterFile.AtEndOfStream Then
' Läser av eventuellt räknarvärde.
intCounterHits = Trim(objReadCounterFile.ReadLine)
If intCounterHits = "" Then
intCounterHits = 0
End If
Else
intCounterHits = 0
End If
' Stänger och dödar textfilsobjektet.
objReadCounterFile.Close
Set objReadCounterFile = Nothing
' Räknar upp räknarvärdet.
intCounterHits = intCounterHits + 1
' Skapar ett textfilsobjekt.
' Om filen finns skrivs den över. Annars skapas den.
Set objWriteCounterFile = objCounterFile.CreateTextFile(strCounterFile, True)
' Sparar det nya räknarvärdet i textfilen.
objWriteCounterFile.WriteLine(intCounterHits)
' Stänger och dödar textfilsobjektet.
objWriteCounterFile.Close
Set objWriteCounterFile = Nothing
' Stänger och dödar filsystemsobjektet.
Set objCounterFile = Nothing
' Returnerar räknarvärdet till anroparen.
CountHit = intCounterHits
End Function
' Funktion för att läsa av besöksräknarens värde utan att räkna upp.
Public Function GetHits(strCounterFile)
' Skapar ett filsystemsobjekt.
Set objCounterFile = Server.CreateObject("Scripting.FileSystemObject")
' Skapar ett textfilsobjekt för läsning.
Set objReadCounterFile = objCounterFile.OpenTextFile(strCounterFile, 1, True)
' Om filen är tom skall räknarens startvärde vara 0.
' Endast sista raden i filen räknas.
If Not objReadCounterFile.AtEndOfStream Then
' Läser av eventuellt räknarvärde.
intCounterHits = Trim(objReadCounterFile.ReadLine)
If intCounterHits = "" Then
intCounterHits = 0
End If
Else
intCounterHits = 0
End If
' Stänger och dödar textfilsobjektet.
objReadCounterFile.Close
Set objReadCounterFile = Nothing
' Stänger och dödar filsystemsobjektet.
Set objCounterFile = Nothing
' Returnerar räknarvärdet till anroparen.
GetHits = intCounterHits
End Function
End Class
%>
' En exempelfil som använder klassen för att räkna upp ett räknarvärde...
<!--#include file="counter.asp"-->
<%
Dim newValue
Dim myCounter
' Skapa ett objekt av HitCounter-klassen.
Set myCounter = New HitCounter
' Räkna upp räknarvärdet och returnera det nya värdet.
newValue = myCounter.CountHit(Server.MapPath("counter.txt"))
' Döda objektet.
Set myCounter = Nothing
' Visa upp det nya värdet.
Response.Write(newValue)
%>
Användning: Skapa en tom textfil för varje dokument där du vill räkna träffar. Lägg lämpligen dessa textfiler i samma mappar som dokumenten.
Skapa sedan objekt av klassen och anropa önskad funktion i de dokument där du vill läsa av / räkna upp räknarvärdet, enligt ovanstående exempelfil.
Bägge funktionerna tar sökvägen till textfilerna som enda argument.
Maila hjärna vid frågor!
Mvh Razor http://www.razorsedge.nu
mailto:razors.edge@swipnet.se