Hej! Jag har gjort en räknare som räknar unika besökare och loggar var de kommer ifrån (i varje fall tror jag att jag har gjort det). Jag misstänker emellertid att den inte registrerar alla användare, och eftersom jag inte är så het på cookies funderar jag på om det kan finnas något fel i koden. Så här ser koden ut:
If Request.Cookies("counter") = "1" Then
'ingenting
else
Response.Cookies("counter") = "1"
Response.Cookies("counter").Expires = DateAdd("d",1,Now())
strSQL = "UPDATE Besokare Set Unika= Unika + 1 WHERE ID=1"
Connection.Execute(strSQL)
strIp = Request.ServerVariables("REMOTE_HOST")
strKlient = Request.ServerVariables("HTTP_USER_AGENT")
dtmDatum = Now
strReferer = Request.ServerVariables("HTTP_REFERER")
SQL = "INSERT INTO Logg (Datum, Ip, Klient, Referer)" &_
" VALUES (#" & dtmDatum & "#, '" & strIp & "', '" & strKlient & "', '" & strReferer & "')"
Connection.Execute(SQL)
Connection.Close
Set Connection = Nothing
End if
Jag vill räkna unika besökare, därför försvinner kakan efter ett dygn.... Är det inte så man gör?
Nej. Däremot gör man så om man vill räkna unika besökare per dag. Det framgick inte. Du verkar ju inte ha något datumvillkor i SQL-frågan där du uppdaterar besöksantalet?
Alltså dom tar inte imot cookies vilket gör att din räknare skulle räkna samma person flera gånger. Att göra en bra räknare är lite svårt, men sessioner utan cookies är nog det bästa.
Okey... Hur räknar man unika besökare på en enkelt vis då?
Kan man inte logga dem som inte tar emot cookies? Typ att man gör en if-sats om webläsaren tar emot cookies??
Jag kom på nu att i min lista visas ibland samma ip-nummer efter varandra mer än en gång, och det borde de ju inte kunna om räknaren hade fungerat som jag vill... Alltså måste de användarna inte ha cookies eller är det något fel i koden...
Om den visar samma ip-nummer efter varandra så är ju din IF sats fel? Du borde ju enbart lägga till personens ip-nummer om den inte redan finns i databasen?
nåt i stil med
Ipnr = request.servervariables("remote_addr")
SqlCheck = "Select * from CounterUnika where Hosts ='" & Ipnr & "'"
Set RsCheck = Connect.execute(SqlCheck)
If RsCheck.eof then
Finns_Redan="Nej"
End If
RsCheck.Close
If Finns_Redan="Nej" then
SqlUnik = "Insert Into CounterUnika (Hosts) Values('" & Ipnr & "')"
Connect.execute SqlUnik
End If
Okey... men för att detta inte ska bli en alltför långsam process bör man väl tömma fältet i databasen varje dag... Kan man göra ett tidsbaserat script som tömmer tabellen t.ex. kl 23:59?