Avatar billede danino Nybegynder
19. september 2005 - 16:31 Der er 12 kommentarer og
1 løsning

Statistik over tidsforbrug

Hej alle

Jeg skal til at lave noget statistik i PHP, som fungerer som følger. Brugeren indsætter noget kode på sin side, som (ligesom chart.dk) indsætter et billede, hvor adressen er www.minfiktiveserver.dk/pic.php?info=blablabla,andetinfo=blabla
for eksempel altså... Min side genererer så et 1x1 pixel gennemsigtigt billede, så brugeren ikke mærker noget til det.

Men.. jeg kunne godt tænke mig at få af vide hvor lang tid brugeren bruger på hver side, og dermed også hvor lang tid brugeren bruger i alt på hjemmesiden.

Er der nogen der har en ide til hvordan jeg skal gribe det an? Det behøver ikke at være noget færdig kode, bare en start.

På forhånd tak
Avatar billede jakobdo Ekspert
19. september 2005 - 16:37 #1
Det er svært at lave en korrekt måling af hvor længe brugeren er på siden!
Hvis du f.eks. satte et timestamp når brugeren besøger en hvilken som helst side på siden (www.domain.dk/side1.php, side2.php osv..)
Så er det jo ikke ensbetydende med at mellemrummet mellem besøget på side1 og besøget på side2 svare til den tid brugeren har været på siden.

javascript kan lave et kald på unload(), altså når siden forlades, men den kan du ikke stole på.
Så jeg tror faktisk ikke du kan lave en 100% korrekt visning af dette.
Avatar billede danino Nybegynder
19. september 2005 - 16:39 #2
ja.. det var også hvad jeg selv kom frem til... måske andre har nogle ideer? grunden til jeg spørger videre er, at jeg mener at have set et prof. script, som netop viste hvor lang tid brugeren var på hver side.

Men det kan jo enten "skyldes" den at de bruger den førnævnte usikre metode, eller at jeg har set forkert :)
Avatar billede danino Nybegynder
19. september 2005 - 16:52 #3
der var her jeg så det: http://awstats.sourceforge.net/cgi-bin/awstats.pl?framename=mainright#sessions

men det er jo vanskeligt at måle en sessions længde, når der kører på den måde jeg har lavet det, ikke?
Avatar billede jakobdo Ekspert
19. september 2005 - 17:02 #4
Altså med session er det usikkert.
Men du kan jo lave noget i stil med:
Bruger kommer ind på din side, vi gemmer evt tidspunktet og andre info i DB og sætter $_SESSION['visit'] = time();
Når han trykker sig videre på siden, så er $_SESSION['visit'] = den gamle tid.
Så tager vi tiden nu, og gemmer den i db.
Og hvis du så løbende opdatere DB, kan du få et nogenlunde billede af hvor længe brugeren har været der.
Avatar billede danino Nybegynder
19. september 2005 - 17:23 #5
ok... jeg prøver noget i retning af det du foreslår... læg bare et svar... jeg vender tilbage med info om det virker (nok i morgen)
Avatar billede jakobdo Ekspert
19. september 2005 - 17:33 #6
Svar!
PS: Jeg ved ikke om det virker, det var bare en tanke!
For en 100%-løsning findes ikke.
Avatar billede danino Nybegynder
20. september 2005 - 16:16 #7
Jeg kan desværre ikke få det til at virke... Den kan vist ikke rigtig finde ud af det med sessions, når scriptet kører som et billede på en anden server... :( Det tætteste alternativ er måske at gøre det med eb cookie?
Avatar billede danino Nybegynder
20. september 2005 - 17:02 #8
eb=en
Avatar billede jakobdo Ekspert
20. september 2005 - 17:49 #9
Jeg ved faktisk ikke om du kan lave en session i et billede!
Det burde du vel godt kunne lave!
Avatar billede danino Nybegynder
20. september 2005 - 18:13 #10
Jeg har faktisk løst det bare ved at tjekke ip'en i DB og så trække tiden fra hinanden mellem to sider samme dag...

Men nu har jeg fået et ny problem... Mit billede bliver tilsyneladende cachet til trods for disse headere:
header("Expires: Fri, 31 Dec 1999 23:59:59 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Pragma: no-cache");
header("Cache-Control: max-age=0, must-revalidate");
header("Content-type: image/gif");
readfile("./images/blank.gif");

(du fik lige allesammen)

I hvert fald kommer der pludselig ikke flere nye linjer i DB. Jeg har prøvet at få mit billede til at skrive sql'en ud som den bruger, og den virker fint i phpmyadmin?!?

Jeg ved ikke om du har en ide, eller jeg skal oprette et nyt sp?
Avatar billede jakobdo Ekspert
21. september 2005 - 07:49 #11
På siden: http://dk2.php.net/gd
er der en som bruger disse headers til no-cache, test lige dem!

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-type: image/gif");
Avatar billede danino Nybegynder
21. september 2005 - 20:35 #12
Tak skal du have... Du har hjulpet rigtig meget...
Jeg fandt ud af at det ikke var fordi mit billede blev cachet, at scriptet ikke blev kørt, men derimod en fejl i det javascript der udskriver mit billede...

Men tak endnu engang...!
Avatar billede jakobdo Ekspert
21. september 2005 - 20:36 #13
Det var så lidt! :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