webForumDet fria alternativet

Funkar denna räknare!?

ASP

3 svar · 245 visningar · startad av henkepenka

Medlem sedan sep. 2002125 inlägg
Frågan#1

Tja!

Jag har slängt ihop en räknare till en sida som jag har. Det jag vill göra med den är att jag vill räkna unika besökare/dag + lite andra grejer som ni kanske ser.

Men stämmer denna eller är det något jag har glömt eller är det helt åt h-vete?

Denna kod ligger bland mina databaskopplingar och includeras på alla sidor på webbplatsen.

Kom jättegärna med förbättringar och andra tips!!!

<%
Set Connect = Server.CreateObject("Adodb.Connection") 
OpenDatabase

SQL = "Select * From stats WHERE datum='" & date() & "'"
Set RS = Connect.execute(SQL)

Do Until RS.EOF
	IF RS("ip") = Request.ServerVariables("remote_host") Then
		Response.Cookies("kanelbulle") = "ja"
    	Response.Cookies("kanelbulle").Expires = Date() + 1
		End If
RS.MoveNext
Loop

If Request.Cookies("kanelbulle") <> "ja" Then
	datum = date()
	manad = Month(Now)
	ar = Year(Date) 
	dag = Weekday(Date)
	vecka = DatePart("ww", Date(), 2)
	tid = FormatDateTime(now,4)
	ip = Request.ServerVariables("remote_host")
	sida = Request.ServerVariables("URL")
	fran = request.servervariables("HTTP_REFERER")
	
	Function getBrowser()
	Dim Browser, ua
	
	ua = Request.ServerVariables("HTTP_USER_AGENT")
	
	If Instr(ua, "MSIE") Then
		If Instr(ua, "MSIE 6.") Then
			Browser = "Microsoft Internet Explorer 6.x"
		ElseIf Instr(ua, "MSIE 5.") Then
			Browser = "Microsoft Internet Explorer 5.x"
		ElseIf Instr(ua, "MSIE 4.") Then
			Browser = "Microsoft Internet Explorer 4.x"
		ElseIf Instr(ua, "MSIE 3.") Then
			Browser = "Microsoft Internet Explorer 3.x"
			If Instr(ua, "MSIE 3.02") Then
				Browser = "Microsoft Internet Explorer 3.02"
			End If
		Else
			Browser = "Microsoft Internet Explorer"
		End If
	ElseIf Instr(ua, "Mozilla") and Instr(ua, "compatible") = 0 Then
		If Instr(ua, "Netscape6") Then
			Browser = "Netscape Navigator 6.x"
		ElseIf Instr(ua, "Mozilla/4") Then
			Browser = "Netscape Navigator 4.x"
		ElseIf Instr(ua, "Mozilla/3") Then
			Browser = "Netscape Navigator 3.x"
		Else
			Browser = "Netscape Navigator"
		End If
	ElseIf Instr(ua, "Opera") Then
		Browser = "Opera"
	End If
	
	getBrowser = Browser
End Function

	browser = getBrowser
	
	Function getOS()
	Dim System, ua, os
	
	ua = Request.ServerVariables("HTTP_USER_AGENT")
	os = Request.ServerVariables("HTTP_UA_OS")
	
	If Instr(ua, "Windows 95") Or Instr(ua, "Win95") Then
		System = "Windows 95"
	ElseIf Instr(ua, "Win 9x 4.90") Then
		System = "Windows ME"
	ElseIf Instr(ua, "Windows 98") Or Instr(ua, "Win98") Then
		System = "Windows 98"
	ElseIf Instr(ua, "Windows 3.1") Or Instr(os, "Win16") Then
		System = "Windows 3.x/Windows NT 3.x"
	ElseIf Instr(ua, "NT 5.1") Or Instr(oa, "NT 5.1") Then
		System = "Windows XP"
	ElseIf Instr(ua, "NT 5") Or Instr(oa, "NT 5") Then
		System = "Windows 2000"
	ElseIf Instr(ua, "NT") Or Instr(oa, "NT") Then
		System = "Windows NT"
	ElseIf Instr(ua, "Mac") Then
		System = "Mac"
		If Instr(ua, "PowerPC") Or Instr(ua, "PPC") Then
			System = "Mac PPC"
		ElseIf Instr(ua, "68000") Or Instr(ua, "68K") Then
			System = "Mac 68K"
		End If
	ElseIf Instr(ua, "Linux") Then
		System = "Linux"
	ElseIf Instr(ua, "X11") Then
		System = "UNIX"
	End If
	
	getOS = System
End Function

	os = getOS
	Connect.Execute "Insert Into stats(datum,manad,dag,tid,vecka,ar,ip,sida,fran,browser,os) Values('" & datum & "'," & manad & "," & dag & ",'" & tid & "','" & vecka & "','" & ar & "','" & ip & "','" & sida & "','" & fran & "','" & browser & "','" & os & "')",,128
	Response.Cookies("kanelbulle") = "ja"
   	Response.Cookies("kanelbulle").Expires = Date() + 1
End If 
Set RS = Nothing

ip = Request.ServerVariables("remote_host")
sida = Request.ServerVariables("URL")
datum = date
Connect.Execute "Insert Into stats2(ipnummer,sida,datum) Values('" & ip & "','" & sida & "','" & datum & "')",,128

Connect.Close
Set Connect = Nothing
%>
Medlem sedan nov. 20017 144 inlägg
#2

Hurvida den funkar vet väl du själv?
Personligen så skulle jag använda en select case i stället.
Det blir mindre roddigt än att hålla på med elseif.

Medlem sedan sep. 2002125 inlägg
#3

Ok...
...Visst verkar den stämma någorlunda ok, men man kan ju ha missat och gjort enkla fel...

Medlem sedan nov. 20017 144 inlägg
#4

Ett statistikscript kan ju bli ganska komplext.
Låt säga att 80% av alla surfare använder IE 6.0 så är det ju ganska så onödigt att lagra "Microsoft Internet Explorer 6.x" i samma tabell som ip-adresserna varje gång en besökare kommer till sidan.
Då kanske man kan tänka sig en tabell som heter browsers och en kolumn som heter IE6 osv. men en enkel räknare bara.
Det samma på Operativsystem.
OSV.
Tåls alltså att tänkas på om man skall göra det någorlunda effektivt.

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)