/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hvordan laver man en besøgstæller?
Fra : Christian Heyn


Dato : 04-06-05 05:17

Hej Alle

Jeg står og skal anvende en besøgstæller på min side.
Mit webhotel stiller
MySQL og PHP til rådighed.
Skal man lave en tabel "besøg"?

Kan nogle hjælpe mig?

På forhånd tak - Christian Heyn

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
torp.kde@webspeed.dk (04-06-2005)
Kommentar
Fra : torp.kde@webspeed.dk


Dato : 04-06-05 06:32

Christian Heyn wrote:

> Hej Alle
>
> Jeg står og skal anvende en besøgstæller på min side.
> Mit webhotel stiller
> MySQL og PHP til rådighed.
> Skal man lave en tabel "besøg"?
>
> Kan nogle hjælpe mig?
>
> På forhånd tak - Christian Heyn
>
Hej hent en besøgstæller på hotscripts.com

Kasper Johansen (04-06-2005)
Kommentar
Fra : Kasper Johansen


Dato : 04-06-05 09:23

"Christian Heyn" <heyn@c.dk> skrev i en meddelelse
news:42a12b37$0$18639$14726298@news.sunsite.dk...
> Jeg står og skal anvende en besøgstæller på min side.
> Mit webhotel stiller
> MySQL og PHP til rådighed.
> Skal man lave en tabel "besøg"?

Evt. gem alle hostmasks i en tabel, og slet alle der er mere end 10 min
gamle.

Du kan få en hostmask ved følgende kommando:

$hostmask = gethostbyaddr($_SERVER[REMOTE_ADDR]);

Anyways, så bør du checke om $_SERVER[X_HTTP_FORWARDED_FOR] er sat, da
brugeren så befinder sig bag ved en anden computer. Brug da istedet den IP,
som den indeholder.


Nogle hostmasks er "ødelagte" (noget med DNS-serveren), hvilket vil
resultere i at PHP vil være omkring 5 sec om at få en timeout. Derved kan du
lige lægge 5 sec's load til din side, hvilket vil være utroligt irriterende
for brugeren (jeg har selv været ude for det).

Derfor er hostmasks ikke den bedste ide. Selv erstattede jeg mist
hostmask-felt med følgende:

$hostmask = md5($_SERVER[REMOTE_ADDR] . "-" . $_SERVER[HTTP_X_FORWARDED_FOR]
.. "-" . $_SERVER[HTTP_USER_AGENT] . "-" . $_SERVER[HTTP_ACCEPT_LANGUAGE]);


Derved burde jeg få en nogenlunde unik streng, jeg gemmer i stedet for
hostmasken.


Hvis du laver et dato-felt, med et unixtimestamp i (hvilket gøres med
kommandoen time(), hvis nogen skulle være i tvivl), kan du slette indsætter
der er mere end 10 min gamle således:

$deldato = strtotime("-10 minutes");
mysql_query("DELETE FROM onlineusers WHERE dato < '$deldato'");


Der er nok en smartere SQL-kommando til det, men det er lige hvad jeg har
kunne bikse sammen.


Hvis jeg har misforstået din post, og du vil tælle op hvor mange besøgende
du har på månedsbasis, er det helt klart bedst at validere dette ud fra
Apache's log-filer (efter min mening). Disse log-filer bliver alligevel
dannet af Apache, og hvis du gør det ved hjælp af PHP vil du bare udføre en
log-kommando to gange, når der kun var brug for en.

Google evt. efter Webalizer eller Modlogan, der er programmer til at scanne
Apache's logfiler.

--
Mvh Kasper Johansen



Søg
Reklame
Statistik
Spørgsmål : 177517
Tips : 31968
Nyheder : 719565
Indlæg : 6408634
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste