Sökte, men hittade inget mer än länkar till färdiga skript. Och det är klart, de går säkert att använda. Men, jag skulle hellre konstruera en själv. Och då har jag lite funderingar på hur en sådan borde fungera.
Jag skulle vilja ha en räknare per sida som besökaren laddar. För att dels kunna se hur många som kommer och även vad de i så fall tittar på. Detta borde ju gå att lagra mha MySQL som jag har. Om man lagrar "sidID" och datum och tid den laddades senast samt ev IPnr (behövs det?) så borde man väl vara på god väg. Eller? :q Men... några frågeställningar dyker upp:
De flesta av mina skript laddar om sig själva vid submitt. Hur förhindrar man att tex en person som tar en viss frågesport räknas två gånger pga skriptet laddar om sig själv?
Vad händer om någon trycker refresh?
Om en viss person besöker samma sida flera gånger under ett besök (men tittar på andra sidor emellan) borde räknaren räknas upp igen då?
Är det fler klurigheter som jag inte verkar ha koll på och vilka i så fall?
Tacksam för råd beträffande vad man måste tänka på... :)
Det finns säkert optimalare sätt att göra det på, men jag skulle helt enkelt lagrat användarens sessions-id och typ datumet för besöket, i en databas. Det är ju (förhoppningsvis) så unikt att inga två besökare samtidigt råkar få samma id.
Sedan, får man ha en funktion som dels kollar bland sessions-variablerna efter typ $_SESSION['isCounted'].
Är inte denna variabel satt, så fråga databasen om besökarens sessions-id ligger lagrat, och besöksdatumet var = dagens datum, om det finns i databasen, sätt $_SESSION['isCounted'] till true eller liknande. Finns inte raden i databasen, så lagra den. På detta sätt kollar den först i sessionen (slipper fråga databasen, förutom när det är nödvändigt) typ.
Det är iaf. en möjlig tanke, finns säkert som sagt bättre.
/red.
Snabbsvar på dina frågor:
1 och 2: Sessionen försvinner ju inte förrän efter x antal minuters inaktivitet, eller webbläsaren stängs, och påverkas ju inte av refresh/förflyttningar mellan sidor, så detta borde ju vara en lämplig lösning.
3: Lite klurig fråga, jag själv skulle väl fortfarande vilja se det som en enda session och ett enda besök (så att jag inte låter statistiken förleda mig) men det är ju bara jag ;)
4: Lämnar jag åt någon mer erfaren att svara på ;)
ade - Jag vill helst skriva skriptet själv. Och jag har tillgång till MySQL-databas. Jag har läst artikeln, men jag tyckte inte att den tillförde något till det jag redan insett (första inlägget i denna tråd). Missade jag något i artikeln? Red: Aha! Man kan se hur skripten är gjorda! Tackar, då kan man kanske få vissa tips! :D
Patrik81 - Det finns två hakar i resonemanget: Om jag lagrar sessionsid (garanterat unikt) missar jag ju helt folk som ej loggar in. Det är bara inloggade som har sessionsid... Hur får jag koll på resten? :q
Och sedan ville jag ju ha en räknare för varje sida... Är det en dum idé alltså? :q Varför i så fall? Jag tycker det verkar vara smidigaste sättet att dels se vilka sidor som folk (ev) besöker samt fånga de som skaffar sig direktlänkar och inte tar sig in via frontsidan. Och hur kan $_SESSION['isCounted'] användas för flera olika sidräknare? Det verkar jobbigt att sätta en sessionsvariabel/sida.... Jag kanske missförstod något?
Din första hake håller jag inte med om riktigt.
Du kan ju på förstasidan slänga in en session_start(); även om du inte har för avsikt att logga in någon på den sidan.
På så sätt kommer du ju åt $_SESSION även om besökarna inte loggat in. :)
Däremot, hake två, är mycket mer berättigad, jag förstår nu när jag läste om ditt ursprungliga inlägg vad du menar (måste ha läst det lite för snabbt första gången, och insåg inte att du även ville föra statistik på varje enskild sida.)
Det blir ju lite klurigare, men inte omöjligt.
Man skulle ju kunna klura lite med en kontroll som kollar vilken referrer sidan har. Om filnamnet som ligger lagrat i referrer är detsamma som filnamnet på den fil som just kör kontrollen, så har ju sidan på något sätt laddats om.
Min ursprungliga idé skulle nog säkerligen kunna modifieras så att den kör denna kontrollen, och samtidigt lagrar vilken sida det handlar om i databasen.
Nu skulle ju denna lösning då innebära att $_SESSIONs arrayen blir fullmatad med värden (varje sida skulle ju behöva sin egna 'isCounted' för att bespara databasen besväret att kolla detta för varje nyladdad/refresh:ad sida) Men det är ju fortfarande ett möjligt sätt att lösa problemet på ;)
... Din första hake håller jag inte med om riktigt.
Du kan ju på förstasidan slänga in en session_start(); även om du inte har för avsikt att logga in någon på den sidan.
På så sätt kommer du ju åt $_SESSION även om besökarna inte loggat in. :)...
Problemet är att jag aldrig sätter någon sessionscookie för de som inte loggar in. Visst kan man ändra på det, men... den där "rensa alla cookies"-lagen blir ju mer komplicerad att tillgodose då, om man inte helt enkelt kan slänga dom vid utloggningen...
Nu är jag ju ingen hejare på hur php fungerar "under huven" så att säga, men är det inte så att en sessioncookie typ har en begränsad livslängd på servern, efter vilken den dör och plockas bort, eller är det inte så?
I annat fall kan det ju faktiskt bli ganska så klurigt (bortom min kunskapshorisont) att lösa. :S
För gäster kollas alltid mot databasen om deras ip finns lagrat för den sidan under de senaste 20 minuterna.
För inloggade sätts $_SESSION['counted'] till ett heltal. På detta heltal använder jag bitmanipulering för att se om en viss sida har biten satt eller ej... (Alltså varje sida hör ihop med en viss bit.)
Huruvida lösningen är bra, hyfsad, dålig eller urusel har jag ingen koll på... ;) Nån som har en åsikt? :q
281 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9