[PHP] Tracker bouwen - hoe best includen?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DePhille
  • Registratie: September 2005
  • Laatst online: 23-11-2024
Hallo,

Ik ben een statistics tracker aan het schrijven in PHP. Nu vraag ik me af hoe ik het beste mijn PHP script kan "includen" op een webpagina. Includen staat tussen accenten omdat ik het script ook wil kunnen gebruiken op een gewone .html pagina, en niet enkel een .php pagina.

Momenteel heb ik een javascriptje geschreven dat eerst ene paar extra variabelen zoals screen resolution en referer in een URL zet voor een afbeelding en dan via document.write de image-tag op het desbetreffende document zet. Dat geeft echter veel problemen:
Ten eerste is mijn tracker slechts 75% nauwkeurig* (Javascript staat uit, laad te traag, niet cross-browser, geblokkeerd, ...)
Ten tweede moet ik $_SERVER['HTTP_REFERER'] gebruiken om de URL van de huidige pagina te bekomen (en dit wordt vaak geblokkeerd of gespoofed)

*Vergeleken met de statistieken uit AWstats.

Dingen die ik al geprobeerd heb:
1) Iframes: Zeker en vast niet cross-browser, wordt vaak geblokkeerd als pop-up, ...
2) <script src=""> en dan via een ander javascript hier iets laden. Wordt bijna door elke browser geblokkeerd.
3) AJAX. Wordt ook geblokkeerd omdat ik een script aanroep van een ander domein.

Ik zat ook te denken aan cookies: Ik store de referer en andere gegevens in een cookie, en deze wordt dan bij de tweede hit doorgegeven aan het PHP script. Maar dan werkt het enkel na de 2e hit en als cookies ingeschakeld zijn. Hier heb ik nog geen gegevens van, maar ik vermoed dat dit nog minder dan 75% nauwkeurigheid oplevert, niet?

Zijn er betere methodes om via PHP een tracker te includen op een webpagina?

Dank bij voorbaat,
DePhille

[ Voor 11% gewijzigd door DePhille op 24-12-2008 13:34 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

2) <script src=""> en dan via een ander javascript hier iets laden. Wordt bijna door elke browser geblokkeerd.
Hoe bedoel je dat? Zet je met javascript het source attribuut? Dan zou ik sowieso gewoon die hele script tag achterwege laten en 'm simpelweg toevoegen via het DOM, dat werkt volgens mij meestal wel

Wat die cookies betreft, je kunt natuurlijk ook de cookie instellen met javascript (voordat de request naar de server wordt gedaan voor je stats script)

[ Voor 19% gewijzigd door .oisyn op 24-12-2008 14:07 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Observer
  • Registratie: April 2001
  • Laatst online: 16:24
Ik zou mezelf niet blind staren op "nauwkeurigheid". Het zijn statistieken, er hangt geen functionaliteit vanaf (hoop ik). Ik denk dat je 't beter volledigheid of dekkingsgraad kunt noemen overigens.

Statistieken van een grote steekproef met 75% dekking zijn betrouwbaarder dan van een kleine steekproef met 100% dekking, want het is een betere representatie van je gebruikers. Ik zou dus gaan voor de oplossing die het makkelijkst toepasbaar is voor een zo groot mogelijke groep gebruikers.

De transparante pixel methode werkt dan over 't algemeen 't beste: het is het snelst, werkt in elke browser en het aantal mensen die de referer spoofen is maar een klein percentage (als er al wat gespoofed wordt is het vaak de user agent of het IP).

Hou er ook rekening mee dat je 't ook allemaal moet verwerken en opslaan, van al je gebruikers die gegevens opslaan kan nog wel eens in de papieren lopen als je veel bezoekers hebt. Bij grote websites (Marktplaats oid) slaan ze ook niet alles op, daar worden die gegevens ws. zelfs maar van een deel van de gebruikers opgeslagen.

There are 10 kinds of people in the world: those that understand binary and those that don't


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Waarom parse je niet gewoon de IIS/Apache weblogs? Een dergelijke manier van statistieken verzamelen heeft geen negatieve invloed op de performance van je website (javascript en server sided scripting moeten bij elk request worden uitgevoerd) en het werkt met alle (virtuele) bestanden van je website, dus ook images en stylesheets en met alle browsers.

Er zijn al diverse (open source) log parsers te vinden welke hun data in een toegankelijke SQL database opslaan. Voor de presentatie hoef je dan alleen de juist queries op de database uit te voeren.

Probeer niet opnieuw het wiel uit te vinden, maar gebruik wat al voorhanden is. Dat scheelt een hoop tijd die je aan belangrijkere zaken van je website kan besteden. Of is je website soms al helemaal af?!

Alvast prettige kerstdagen toegewenst.

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Ik zou de code van Google Analytics eens uitpluizen als ik jou was. Zij gebruiken ook gewoon een doornormale script-tag. Die wordt overigens door geen enkele browser 'geblocked', zou niet weten waarom.

En je hebt natuurlijk geen referrer nodig om de huidige pagina te achterhalen, 99% van de gegevens wordt clientside vergaard, zo ook de pagina-url. Je legt zo ook zoveel mogelijk verwerking bij de client neer, wat bij grote hoeveelheden (wat met stat-tracking nogal eens het geval is) behoorlijk kan gaan schelen.

[ Voor 44% gewijzigd door Bosmonster op 24-12-2008 16:43 ]


  • DePhille
  • Registratie: September 2005
  • Laatst online: 23-11-2024
Bedankt voor de reacties tot dusver!

De transparante pixel is inderdaad de beste methode die ik tot nu toe kon vinden, samen met de <script> tag met document.write wegschrijven. Alhoewel dat ik denk dat sommige browser het niet toestaan dat de source van een scripttag zich bevind op een ander domein (Firefox).

De verwerking zit redelijk goed in elkaar, al bij al worden er maar 4-6 queries gebruikt voor de tracker (gezien de uitgebreide statistieken valt dit wel goed mee).

De code van Google-Analytics is niet echt een goed voorbeeld; Google analytics haalt net geen 50% nauwkeurigheid (steekproef van 9 maanden, 6000 pageviews/maand). Om de pagina te krijgen waarop de gebruiker zich momenteel bevind moet wel $_SERVER['HTTP_REFERER'] gebruikt worden (ik kan geen Apache log-parsing gebruiken) en deze header wordt soms weggefilterd (Norton doet dit af en toe wel eens). Erg vaak gebeurt dit niet, maar als het gebeurt mis ik wel het belangrijkste stukje informatie van alles :).

Niemand_anders: De bedoeling is dat dit script gebruikt kan worden door mensen die weinig kennen van webdevelopment maar toch uitgebreide statistieken ter beschikking willen hebben. Ook krijg je niet altijd toegang tot die bestanden op een webhost, tenzij je hem zelft runt uiteraard. maar dit zou inderdaad de ideale oplossing zijn. Het script hoort niet specifiek bij een website maar toch bedankt voor de tip :).


Bedankt voor de reacties en nog een prettige kerst!

  • Room42
  • Registratie: September 2001
  • Niet online
Bosmonster schreef op woensdag 24 december 2008 @ 16:42:
Ik zou de code van Google Analytics eens uitpluizen als ik jou was. Zij gebruiken ook gewoon een doornormale script-tag. Die wordt overigens door geen enkele browser 'geblocked', zou niet weten waarom.

[...]
De client kan hem overigens wel zelf blocken d.m.v. bijvoorbeeld Adblock (doe ik ook, al 21103 hits :X).

[ Voor 6% gewijzigd door Room42 op 25-12-2008 15:34 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
DePhille schreef op donderdag 25 december 2008 @ 15:23:
Bedankt voor de reacties tot dusver!

De transparante pixel is inderdaad de beste methode die ik tot nu toe kon vinden, samen met de <script> tag met document.write wegschrijven. Alhoewel dat ik denk dat sommige browser het niet toestaan dat de source van een scripttag zich bevind op een ander domein (Firefox).
Je kan prima een URL buiten je domein gebruiken in het src (source) attribuut van de script tag dit geldt ook voor in Firefox. Het is wel zo dat je geen XMLHttpRequest kan maken naar een ander domein, maar dit geldt ook voor andere browsers dan Firefox!

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • DePhille
  • Registratie: September 2005
  • Laatst online: 23-11-2024
Borizz schreef op donderdag 25 december 2008 @ 22:16:
[...]


Je kan prima een URL buiten je domein gebruiken in het src (source) attribuut van de script tag dit geldt ook voor in Firefox. Het is wel zo dat je geen XMLHttpRequest kan maken naar een ander domein, maar dit geldt ook voor andere browsers dan Firefox!
Dat lijkt me inderdaad een betere verklaring, bedankt :).
Pagina: 1