M'n bezoekers teller heeft nog 1 klein probleempje:
Om te voorkomen dat ik een extra hit krijg als iemand refreshed (hoef mezelf echt niet voor de gek te houden), sla ik de laatst bezochte pagina in een sessie op
Nou merkte ik dat dat niet ging werken als iemand de eerste pagina refreshte - wat natuurlijk logisch, dus heb ik voor de eerste pagina een redirect gemaakt, zodat die waarde gelijk in de sessie wordt opgeslagen. (beetje kromme zin, maar snap wat ik bedoel?)
Dit doe ik zo:
Nou merk ik alleen dat als iemand de eerste pagina opvraagt en gelijk tijdens het laden van die pagina als een gek op refresh gaat klikken, dit niet werkt.
Tenminste....dit is wat ik denk dat er gebeurt. M'n hele logfile ziet er goed uit, maar vanochtend had ik iemand die met tussenpozes van ca 2 seconde telkens als een nieuwe bezoeker werd gelogd op de eerste pagina. Dus ik denk dat ie gewoon heel zenuwachtig op refresh heeft zitten klikken omdat het te lang duurde naar zijn/haar mening.
Maar aan de andere kant snap ik niet goed hoe dit dan kan gebeuren, want de server is de code aan het parsen en gelijk na het wegschrijven van de bezoeker als 'nieuwe bezoeker' vind die redirect plaats, nog voor dat ie 'm in die andere logfile weg schrijft (die code staat tussen de tweede if{} en slaat id, tijd, pagina, etc op) en zou ie niet nog een keer geregistreerd moeten worden.
Anyways...wie kan me vertellen wat er fout gaat en wat ik er aan kan doen?
(ik zat zelf al te denken aan de laatste regel in de logfile bekijken en zien of die (behalve de tijd) identiek is aan de wat ie moet toevoegen - maar dat moet makkelijker kunnen volgens mij)(maargoed, ik had ook verwacht dat dit al zou moeten werken....)
Om te voorkomen dat ik een extra hit krijg als iemand refreshed (hoef mezelf echt niet voor de gek te houden), sla ik de laatst bezochte pagina in een sessie op
Nou merkte ik dat dat niet ging werken als iemand de eerste pagina refreshte - wat natuurlijk logisch, dus heb ik voor de eerste pagina een redirect gemaakt, zodat die waarde gelijk in de sessie wordt opgeslagen. (beetje kromme zin, maar snap wat ik bedoel?)
Dit doe ik zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| // we're gonna check if this is the first time in this session the user accesses a page: if (!$_SESSION["u_counter"]) { // hiermee sla ik in een file iedere nieuwe bezoeker op // en genereer daarmee tegelijkertijd een bezoekersid, die ik in m'n andere logfile gebruik $u_counter = implode("", file($root."/inc/visits.dat")) + 1; $fp = fopen($root."/inc/visits.dat","w"); fputs($fp, trim($u_counter)); fclose($fp); session_register("u_counter"); header("Location:$REQUEST_URI"); } // we're gonna log the specifics of this user if ($REQUEST_URI != $_SESSION["last_page"]) { $last_page = $REQUEST_URI; session_register("last_page"); // en dan wat code om informatie over die bezoekers te registreren } |
Nou merk ik alleen dat als iemand de eerste pagina opvraagt en gelijk tijdens het laden van die pagina als een gek op refresh gaat klikken, dit niet werkt.
Tenminste....dit is wat ik denk dat er gebeurt. M'n hele logfile ziet er goed uit, maar vanochtend had ik iemand die met tussenpozes van ca 2 seconde telkens als een nieuwe bezoeker werd gelogd op de eerste pagina. Dus ik denk dat ie gewoon heel zenuwachtig op refresh heeft zitten klikken omdat het te lang duurde naar zijn/haar mening.
Maar aan de andere kant snap ik niet goed hoe dit dan kan gebeuren, want de server is de code aan het parsen en gelijk na het wegschrijven van de bezoeker als 'nieuwe bezoeker' vind die redirect plaats, nog voor dat ie 'm in die andere logfile weg schrijft (die code staat tussen de tweede if{} en slaat id, tijd, pagina, etc op) en zou ie niet nog een keer geregistreerd moeten worden.
Anyways...wie kan me vertellen wat er fout gaat en wat ik er aan kan doen?
(ik zat zelf al te denken aan de laatste regel in de logfile bekijken en zien of die (behalve de tijd) identiek is aan de wat ie moet toevoegen - maar dat moet makkelijker kunnen volgens mij)(maargoed, ik had ook verwacht dat dit al zou moeten werken....)