Visitcounter med cookie

Tags:    php

Hej

Jeg har prøvet at lave en anordning der holder styr på hvor mange gange en given person/klient besøger en URL/hjemmeside.

Jeg har læst følgende tråd http://www.udvikleren.dk/Thread.aspx/6/6169/31943 og prøvet eksemplet anført i tråden som ligner dette :

setcookie("visitedwithinyear", $_COOKIE["visitedwithinyear"]+1, time()+(60*60*24*365), "/", ".myhost.dk", FALSE);

Resultatet fra $_COOKIE["visitedwithinyear"] returnerer imidlertid 0 som jeg gemmer i en MySQL database.

Hvordan løses det bedst med at lave en counter for hver besøgende på en URL/hjemmeside.

Mit store problem er : Hvordan læses værdien fra cookien ?

Jeg vil sætte pris på kode eksempler




6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Det var da en hulens masse kode. :)

Har smidt det du min. behøver at gøre. Resten kan du selv dumpe ind.
Selv sagt skal du lave et unikt indeks på idkolonnen (I dit tilfælde "visitorid"). Så kan DUPLICATE KEYS overtage en del af din kode.
Fold kodeboks ind/udKode 


Der vil kun forekomme en query i hele afviklingen. Det er når brugeren besøger sitet første gang i sessionens levetid. Hvis du ikke ved hvordan sessions virker, læs om dem på php.net/sessions



Gem klientens IP, sammen med tidspunktet i databasen. Set en session variabel, så du kun smider én række for hver gang klienten besøger sitet.

Derefter kan du lave alle de udtræk du vil.



Gem klientens IP, sammen med tidspunktet i databasen. Set en session variabel, så du kun smider én række for hver gang klienten besøger sitet.

Derefter kan du lave alle de udtræk du vil.


Jeg har allerede gemt klientens IP og mange andre data om klienten samt dato og tid. Men klientens IP kan ikke anvendes til identifikation af en specifik klient, da mange klienter anvender dynamisk IP.

Jeg er ikke sikker på hvad du mener med en session variabel. Dette bedes du vise helst med kode.
Jeg forstår heller ikke helt hvad du mener med "smider én række for hver gang klienten besøger sitet" - Dette bedes du præcisere.

Det jeg resultat jeg ønsker at opnå er, at jeg i min tabelrække har en variabel som viser at denne klient har besøgt sitet 5 gange. Og en ny tabelrække der viser 6 gange næste gang sitet bliver besøgt af samme klient.



Det du er ude efter kan aldrig give noget præcist resultat, da nogle klienter ikke tillader cookies og andre sletter dem ind imellem.

Men her er noget du kan arbejde med
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 28.09.2008 23:57 af Bruger #10216
Det du er ude efter kan aldrig give noget præcist resultat, da nogle klienter ikke tillader cookies og andre sletter dem ind imellem.

Men her er noget du kan arbejde med
Fold kodeboks ind/udKode 


Jeg har arbejdet med den kode du gav mig. Den gav dog ikke helt svaret på det jeg var ude efter: Hvordan læser man værdien fra en cookie.
Jeg ville nemlig gerne undgå en masse database access for først at finde den DB entry med et sessionsnummer som er identisk og med max værdi på antal besøg. Men det er så det jeg alligevel har forsøgt at kode mig frem til ud fra den kode du gav.
Nu fungerer koden imidlertid ikke da linien $noofvisits = $myrow[0]+1 altid returnerer 1.
Jeg har taget udgangspunkt i at $myrow[0] har værdien fra visitcount i SELECT statementet.

Jeg vil sætte stor pris på hvis du eller andre kan oplyse mig fejlen i koden. Ligeledes vil jeg sætte stor pris på hvis der foreslås en alternativ løsning på det problem jeg har beskrevet.
Her er min kode:
Fold kodeboks ind/udKode 




Det var da en hulens masse kode. :)

Har smidt det du min. behøver at gøre. Resten kan du selv dumpe ind.
Selv sagt skal du lave et unikt indeks på idkolonnen (I dit tilfælde "visitorid"). Så kan DUPLICATE KEYS overtage en del af din kode.
Fold kodeboks ind/udKode 


Der vil kun forekomme en query i hele afviklingen. Det er når brugeren besøger sitet første gang i sessionens levetid. Hvis du ikke ved hvordan sessions virker, læs om dem på php.net/sessions


Tak for dine forslag til løsninger Michael. Men jeg foretrækker nu Keep It Simple :) løsninger. Som jeg skrev i mit første indlæg var mit primære problem hvordan jeg læste fra en cookie. Dette har jeg nu fundet ud af og lavet en komplet løsning med.

Den essentielle del af koden ser således ud:
Fold kodeboks ind/udKode 

$noofvisits variablen bliver så gemt i databasen sammen med mange andre variable.

Jeg er fuldt bevidst om at der skal checkes for klienter der ikke tillader cookies og at visse klienter sletter cookies.



t