Avatar billede Slettet bruger
10. oktober 2005 - 19:23 Der er 18 kommentarer og
1 løsning

god besøgstæller

Hej

Jeg er ude på at skrive en log... Brugerbesøg skal ind i en MySQL og bruges til statistiske formål.

Har I eksperter en god måde at gribe det an på ??

Selv har jeg tænkt på at starte en session på hver besøgende og smide enhver ny session ind i db'en. Så slipper jeg for ukorrekte tal, hvis folk refresher (F5).

Hvordan lyder det ??

På forhånd rigtig mange tak :o)
Avatar billede jakobdo Ekspert
10. oktober 2005 - 20:09 #1
Det lyder ikke helt tosset!
Du kunne også gemme ip!
Men den med session skal du bruge ja, for at undgå folk trykker F5 og den så tæller en hver gang.
Avatar billede Slettet bruger
10. oktober 2005 - 20:18 #2
jeps, IP bliver logged - goes without saying ;o)
Avatar billede jakobdo Ekspert
10. oktober 2005 - 20:19 #3
Men hvad så med en bruger som lukker sin browser, åbner igen, skal den tælle et besøg eller hvad?
Avatar billede Slettet bruger
10. oktober 2005 - 20:26 #4
Se nu vi inde på noget at det "sjove". Hvad er et besøg ? Det skal defineres før man går i gang med sådan noget her. Man skal gøre sig klart præcist hvad man vil måle og selvfølgelig hvordan...

Men for at besvare dit spørgsmål, så vil jeg mene at man bør sætte en tidsfrist for hvornår et nyt besøg på siden skal tælles med... Hvis en bruger fx kommer til at lukke sin browser og lige efter åbner den igen og går ind på siden, så er det jo egentlig ikke et besøg. Vil jeg mene.
Avatar billede jakobdo Ekspert
10. oktober 2005 - 20:30 #5
Det man ofte bruger, er at man sætter et tidspunkt!
Lad os bruge now()
Det smider vi i databasen sammen med ip. (det vil kunne give nogle problemer for folk som bruger samme internet forbindelse, da de begge vil have samme IP)
Men man tjekker så f.eks. om ip_i_database = brugerens_ip og tid_i_database + 10 min > now()
Hvis ja, brugeren er "online" vi opdatere hans tid!
Ellers indsætter vi en ny række!
Avatar billede Slettet bruger
10. oktober 2005 - 20:34 #6
Det du siger er at hvis brugeren (ip'en) er mere end x minutter gammel, sætter vi en ny række ind i db'en... Det giver unægtelig problemer, hvis der er 1000 folk på et kontor (bag samme ip) og 3 af dem indenfor x minutter besøger sitet, så vil man kun få en entry og det jo forkert... Vi er altså ude i et dilemma så vidt jeg kan se.
Avatar billede jakobdo Ekspert
10. oktober 2005 - 20:36 #7
Ja, jeg er helt enig!
Men hvordan vil du kende forskel på de 1000 brugere med samme ip?
Så skal du bruge session_id().
Men så kan man lave flere besøg, ved at lukke browser og åbne igen!
Avatar billede Slettet bruger
10. oktober 2005 - 21:11 #8
Nemlig.. Det er noget juks ;o)
Avatar billede jakobdo Ekspert
10. oktober 2005 - 21:14 #9
En cookie kan heller ikke lave en 100%s løsning, en bruger kan have dem disabled.
Så jeg tror ikke du kan lave en 100%s korrekt løsning.
Avatar billede Slettet bruger
10. oktober 2005 - 21:16 #10
Nej, jeg skulle lige selv til at modargumentere hvorfor man IKKE skal bruge cookies, selvom det ville være optimalt at gøre i sådan en sammenhæng her... Man bliver nødt til at indhente noget unikt fra den brugers pc, der går ind på sitet. Og jeg vil heller ikke have at brugere skal logge sig på, da det er et offentligt site.

Hvad hulen gør man ???
Avatar billede jakobdo Ekspert
10. oktober 2005 - 21:32 #11
Jeg tror ikke du kan lave en løsning som bare virker!
Men måske andre kan komme med input?
Avatar billede Slettet bruger
10. oktober 2005 - 21:50 #12
Man er nødsaget til at bruge sessions og håbe på at brugeren ikke bare genstarter sin browser... Dét må være den bedste løsning.
Avatar billede jakobdo Ekspert
10. oktober 2005 - 21:54 #13
:)
Avatar billede Slettet bruger
18. oktober 2005 - 21:50 #14
Jeg har valgt at gøre sådan her:

<?php

require("dbconn.php");

$date = date("Y-m-d");
$time = date("H:i:s");
$ip = $_SERVER['REMOTE_ADDR'];
$agent = $_SERVER['HTTP_USER_AGENT'];

session_start();
$count = $_SESSION["counter"] + 1;
$_SESSION["counter"] = $count;
if ($_SESSION["counter"] == 1) {
    mysql_query("INSERT INTO log (date,time,ip,agent) VALUES ('$date','$time','$ip','$agent')");
    }

?>
Avatar billede jakobdo Ekspert
18. oktober 2005 - 21:56 #15
Så 2 computere med samme ip og browser vil jo blive set som en og samme bruger?
Tænk når f.eks. hele IBM i Lundtofte vil besøge din side!
Så tæller de alle sammen kun et besøg! :o( (hvis altså de kommer fra samme offentlige ip)
Avatar billede Slettet bruger
12. august 2006 - 00:59 #16
Ja, det er et dilemma og vil altid være det. Men noget skal man jo gøre.
Avatar billede jakobdo Ekspert
12. august 2006 - 10:34 #17
Så der findes ikke EN rigtig løsning.
Avatar billede Slettet bruger
12. august 2006 - 11:03 #18
Det kan jeg såmænd kun give dig ret i, jakobdo.
Avatar billede jakobdo Ekspert
12. august 2006 - 11:17 #19
Altid godt at være enig! :o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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

IT-JOB

Capgemini Danmark A/S

Client Partner

Forsvarsministeriets Materiel- og Indkøbsstyrelse

SAP-medarbejder til Roller & Autorisationer i Forsvarets Cyberdivision

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Forsvarets Efterretningstjeneste

Linux Infrastructure Specialist