Avatar billede snooby Nybegynder
06. juni 2007 - 20:25 Der er 27 kommentarer og
1 løsning

Track ip hjælp

Hey skal have lavet en simpel hitcount hvor jeg kun vil have et hit hver gang en ny person kikker siden, det tænkte jeg at man kunne gøre ved evt. at tracke deres IP eller mac og smide den ind i en db og så kan jeg se antallet af hits ved at se hvor mange ip/mac adresser jeg har hentet... men delen ved at man henter den besøgenes ip/mac adresse kan jeg ikke finde ud af.. iøvrrigt vis der er nogle der har nogle kommentare til mit "projekt"
Avatar billede nielle Nybegynder
06. juni 2007 - 23:02 #1
IP-adressen aflæses sådan:

ip = Request.ServerVariables("REMOTE_ADDR")

PS: MAC adressen kan du ikke få.
Avatar billede w13 Novice
08. juni 2007 - 11:30 #2
Din plan er god nok, Snooby, men erfaring siger mig, at der kommer til at ligge rigtig mange ip-adresser i din database lynhurtigt!

Du bør nok i stedet lave ét til felt i databasen med antallet af hits pr. ip-nr., samt en kode, der
1) Tjekker om ip'en findes!
2) Hvis ip'en findes lægges ét "hit" til antallet af hits for denne ip.
  Ellers oprettes ip'en.
Avatar billede snooby Nybegynder
08. juni 2007 - 20:33 #3
jamen, jeg vil have sådan at vis ipen allerede findes i dben skal den ikke tælles som et hit. sådan at om folk kikker 100 gange eller 2 bliver den person(computer) kun talt som et hit.

men jeg har lavet sådan at jeg kan hente ipen og sætte den ind i en db. men kan ikke lige helt hitte ud af at gøre sådan at vis ipen allerede findes i dben skal den ikke logges der i.

men det er vel noget i stilen med at vis ip = nogen afdem der står i dben sker der ikke noget, og hvis der ikke er et mach så bliver ipen skrevet ind i dben.. aner bare ikke lige hvordan man skriver koderne til det ?
Avatar billede nielle Nybegynder
08. juni 2007 - 20:51 #4
Jeg læste dit spørgsmål som om at det kun var delen med at finde de besøgendes IP adresse du havde besvær med...

En mere komplet løsnining kunne se sådan her ud:

ip = Request.ServerVariables("REMOTE_ADDR")

sql = "SELECT count(*) AS antal FROM dinIpTabel WHERE ip = '" & ip & "'"
Set rs = conn.Execute(sql)
antal = rs("antal")

If antal = 0 Then
    sql = "INSERT INTO dinIpTabel (ip) VALUES ('" & ip & "')"
    conn.Execute(sql)
Else
    ' Her kan du vælge at tælle op hvor mange gange du har haft besøg af det ip
End If
Avatar billede snooby Nybegynder
09. juni 2007 - 17:44 #5
Nej jeg tror jeg formulerede mig forker se her:


<%
strvisitor = request.serververiables("REMOTE_ADDR")

set RS = objconn.Execute("INSERT INTO tblVisits (VisitorIP) Values ('" & strvisitor & "')")

else

response.write "ingen ip fundet"
End if
%>

sådan så smider den de iper ind i dben som går ind på siden. men vil gerne have sådan at vis fx ip 10.10.10.10 bliver registreret i dben skal den ikke registreres næste gang den kommer ind.. dvs. alle iper der kommer ind på siden bliver kun registreret EN gang... også selvom de besøger siden X antal gange... men det vel noget i stilen med


if strvisitor "findes i tblVisits" skal der ikke ske noget, men hvis den ikke findes i tblVisits skal den uploade ipen til tblvisits..
Avatar billede morhan Novice
09. juni 2007 - 17:47 #6
Hvis du laver tblVists til et unikt felt, burde følgende virke

<%
strvisitor = request.serververiables("REMOTE_ADDR")

On Error Resume Next

objconn.Execute("INSERT INTO tblVisits (VisitorIP) Values ('" & strvisitor & "')")

If Err.Number = 0 Then
    response.write "ingen ip fundet"
End if

On Error Goto 0
%>
Avatar billede snooby Nybegynder
09. juni 2007 - 18:57 #7
hmm ok
Avatar billede snooby Nybegynder
09. juni 2007 - 22:08 #8
du mener vel at jeg skal lave VisitorIP til et unikt felt. og hvordan gør man det :/ har lige været der inde og kikke på det.. synes ikek jeg kan finde ud a det
Avatar billede nielle Nybegynder
09. juni 2007 - 22:32 #9
Det kode-skelet som jeg beskriver 08/06-2007 20:51:30 vil faktisk sikre at der ikke kommer dubletter i basen.

Morhans' løsnings model vil også virke men der er sjældent god kodestil at lave kode som med vilje generere en fejl i visse situationer (her hvis du indsætter en dublet) og så reagere på denne fejl.
Avatar billede snooby Nybegynder
10. juni 2007 - 12:14 #10
jaah synes nu også det virkede lidt forkert at lave den sådan.. men ja det virker faktis.. men kan du ikke lige give kommentar til dit skelet der. kan nemli ikke helt gennemskue hvordan du gør sådan at der ikke kommer dubletter i dben.. ved det script
Avatar billede nielle Nybegynder
10. juni 2007 - 12:56 #11
Jo da.

Med denne her:

sql = "SELECT count(*) AS antal FROM dinIpTabel WHERE ip = '" & ip & "'"

tæller vi hvor mange gange ip'et allerede findes i tabellen. Antallet bliver gemt under navnet "antal" ("AS" definere et såkaldt alias); Hvis antal er 0 så findes ip ikke i basen, hvis den er større end 0 findes den en (eller flere gange).

Hvis antal er 0 så kan vi godt indsætte ip'et:

If antal = 0 Then
    sql = "INSERT INTO dinIpTabel (ip) VALUES ('" & ip & "')"
    conn.Execute(sql)
Else
    ...
End If

Else-delen er kun med i det tilfælde hvor du kunne tænke dig at gøre noget andet ved et genbesøg fra et givet ip. Du kan helt undvære den hvis du ønsker.

Håber at det hjalp?
Avatar billede morhan Novice
10. juni 2007 - 12:59 #12
Jeg synes nu ikke der er noget forkert i min måde. Det er jo bare en try...catch. Hvis de to metoder blev målt i hastighed, tror jeg min vil vinde
Avatar billede snooby Nybegynder
10. juni 2007 - 13:31 #13
det hjalp helt vildt. prøver det lige
Avatar billede snooby Nybegynder
10. juni 2007 - 13:37 #14
dvs:

<&
IP = request.servervariables("REMOTE_ADDR")
sql = "SELECT count(*) AS antal FROM VisitorIP WHERE ip = '" & ip & "'"

If antal = 0 Then
    sql = "INSERT INTO dinIpTabel (ip) VALUES ('" & ip & "')"
    conn.Execute(sql)
Else
End If
%>
Avatar billede snooby Nybegynder
10. juni 2007 - 13:40 #15
how sådan
<%
ip = request.servervariables("REMOTE_ADDR")
sql = "SELECT count(*) AS antal FROM VisitorIP WHERE ip = '" & ip & "'"

If antal = 0 Then
    sql = "INSERT INTO tblVisits (VisitorIP) VALUES ('" & ip & "')"
    conn.Execute(sql)
Else
    ...
End If
%>
Avatar billede snooby Nybegynder
10. juni 2007 - 13:44 #16
den siger der er en fejl i linie 7 :/
Avatar billede snooby Nybegynder
10. juni 2007 - 13:51 #17
Microsoft VBScript runtime error '800a01a8'

Object required: ''

/inc/visitor.asp, line 7
Avatar billede snooby Nybegynder
10. juni 2007 - 13:51 #18
<%
ip = request.servervariables("REMOTE_ADDR")

sql = "SELECT count(*) AS antal FROM tblVisits WHERE VisitorIP = '" & ip & "'"
If antal = 0 Then
    sql = "INSERT INTO tblVisits (VisitorIP) VALUES ('" & ip & "')"
    conn.Execute(sql)
Else
End If
%>
Avatar billede nielle Nybegynder
10. juni 2007 - 15:09 #19
<%
ip = request.servervariables("REMOTE_ADDR")

sql = "SELECT count(*) AS antal FROM tblVisits WHERE VisitorIP = '" & ip & "'"
If antal = 0 Then
    sql = "INSERT INTO tblVisits (VisitorIP) VALUES ('" & ip & "')"
    conn.Execute(sql)
End If
%>
Avatar billede nielle Nybegynder
10. juni 2007 - 15:10 #20
<%
ip = request.servervariables("REMOTE_ADDR")

sql = "SELECT count(*) AS antal FROM tblVisits WHERE VisitorIP = '" & ip & "'"
Set rs = conn.Execute(sql)
antal = rs("antal")

If antal = 0 Then
    sql = "INSERT INTO tblVisits (VisitorIP) VALUES ('" & ip & "')"
    conn.Execute(sql)
End If
%>
Avatar billede snooby Nybegynder
11. juni 2007 - 16:33 #21
hmm virker ikke med det der heller ikke :S

www.recort.dk neders højre hjørne
Avatar billede nielle Nybegynder
11. juni 2007 - 19:43 #22
...
Set antal = rs("antal")
...

For det er vel den som er linje 5?
Avatar billede nielle Nybegynder
11. juni 2007 - 19:44 #23
Sludder, glem det.

Men hvilken linje er egentlig nr. 5?

Du skal også huske på at conn er en connection/forbindelse til din base - den skal lige etablere først.
Avatar billede snooby Nybegynder
12. juni 2007 - 15:10 #24
bliver den da os... linie 5 er set rs
Avatar billede nielle Nybegynder
13. juni 2007 - 06:54 #25
Den burde ikke fejle. Prøv lige at poste noget mere af din kode.
Avatar billede nielle Nybegynder
23. august 2007 - 08:27 #26
Fik du det til at virke?
Avatar billede snooby Nybegynder
17. december 2007 - 17:02 #27
hehe lang tid siden jeg ahr været på ja fik det tilat virke.. svar ?
Avatar billede nielle Nybegynder
17. december 2007 - 18:08 #28
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester