Søger du en specifik kategori?

 



Oprettet fre. d. 13. marts 2009 kl. 19:27

ahv
ahv (85.273 point)
Guidens karaktér
1
2
3
4
5

Tæl antal unikke besøgende i PHP & MySQL

Den følgende artikel vil gennemgå opbygningen af en simpel tæller, hvor det meste af arbejdet er overladt til MySQL-funktionerne. Artiklen forudsætter basalt kendskab til PHPMyAdmin.
Alle der har haft en hjemmeside i mere end to dage ønsker at finde ud af om der overhovedet er nogen der besøger ens side. En løsning kunne være at oprette sin side på chart.dk, men du kan undgå at tvinges til at  have en reklame for chart.dk på din side. Derfor må vi jo gøre chart.dk's kunst efter og tælle antallet af besøgende på vores side, opbygningen er simpel så der i fremtiden let kan udvides.
Jeg vil gennemgå de forskellige trin i scriptet undervejs. Først skal vi have oprettet en tabel i vores MySQL database, tabellen skal have følgende struktur.

CREATE TABLE `counter` (
  `id` int(11) NOT NULL auto_increment,
  `time` datetime NOT NULL default '0000-00-00 00:00:00',
  `ip` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Tabellen har jeg valgt at kalde counter. Tabellen indeholder 3 felter.
(id) det er fortløbende og tabellens primær nøgle.
(time) holder styr på hvornår brugeren sidst har været aktiv.
(ip) indeholder brugerens ip, hvilket bruges til at genkende brugeren.

I det følgende kan selve scriptet ses. Det vil være kommenteret løbende. Kommentarerne til scriptet vil være indrammet af /*...*/

<?php
/* Vi connecter til databasen. */
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");

/* Brugerens ip-adresse gemmes i variablen $ip. */
$ip = $_SERVER['REMOTE_ADDR'];

/* Vi tjekker om brugeren har været her indenfor de sidste 24 timer, har brugeren ikke det, lægges brugeren ind i tabellen. Man kan også tælle unikke besøgende pr. 20 min, ved at ændre 24 HOUR til 20 MINUTE osv. */
$besoegt_idag = mysql_query("SELECT COUNT(*) AS antal FROM counter WHERE ip='$ip' AND date_add(time,interval 24 HOUR) > NOW() ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
if (!mysql_result($besoegt_idag,0)) {
    mysql_query("INSERT INTO counter (time, ip) VALUES (NOW(),'$ip')");
}

/* Vi tæller antallet af brugere/rækker i tabellen */
$besoeg_ialt = mysql_query("SELECT COUNT(*) AS antal FROM counter");

/* Vi udskriver det fundne antal brugere/rækker i en echo */
echo "Der har været ".mysql_result($besoeg_ialt,0)." besøg";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection);
?>

- AHV

Skrevet ons. d. 14. januar 2004 kl. 16:48| #1

cozey (10.350 point)
Lækker og enkel counter...

Skrevet fre. d. 23. april 2004 kl. 21:52| #2

vind (15.274 point)
Godt beskrevet. Ikke bare ren kildekoder, men med gode forklaringer bag koderne, så man også fatter hvad scriptet egentlig gør... :)

Skrevet tor. d. 29. april 2004 kl. 20:46| #3


Skrevet søn. d. 09. maj 2004 kl. 22:52| #4


Skrevet søn. d. 11. juli 2004 kl. 16:25| #5

phanten (14.105 point)
Artiklen gør som lovet til UG!

Skrevet søn. d. 29. august 2004 kl. 19:53| #6


Skrevet man. d. 15. november 2004 kl. 22:59| #7

11/7 2004 16:25 :) /Htmlkongen

Skrevet ons. d. 28. september 2005 kl. 16:33| #8


Skrevet søn. d. 08. januar 2006 kl. 17:51| #9

slst (11.590 point)
Den virker da ikke... den tæller ikke op selvom jeg bruger 2 comutere

Skrevet tor. d. 06. april 2006 kl. 13:19| #10

kimmer25 (10.970 point)
vil bare lige sige at artiklen er god nok, men den tæller ikke unikke besøgende, men derimod besøgende på siden. en rettelse til tabellen... ip skal sættes til unik så vil den tælle unikke besøg. og så sæt "24 HOUR" til "1 MINUTE" så skulle den fungere helt efter planen.

Skrevet søn. d. 13. juli 2008 kl. 10:34| #11

simsi (10.710 point)
Kan det ikke gøre på en bedre måde, jeg tænker lidt; det bruger sindsygt meget database plads, hvis man har over 1200 besøgende om dagen?

Skriv en kommentar



Mest populære guides

Guidens karakter
!!!Karaktér: 3
12 stemmer
31/01 - 2011
Af: heinzdmx

Dropbox - gratis online lagerplads

Jeg vil i denne guide forklare lidt om hvad Dropbox er og også hvordan du får mest mulig plads på Dropbox. Dropbox er kort sagt en service hvor du har dine data lagt til backup på både nettet og din egen computer.
Guidens karakter
!!!Karaktér: 4
33 stemmer
02/02 - 2009
Af: jkrons

Dato- og tidsberegninger i Excel

En introduktion til simple beregninger med dato og tid i Excel. Opdateret med afsnit om beregning af tillæg.
Excel  |  Læs »
Guidens karakter
!!!Karaktér: 4
21 stemmer
06/11 - 2011
Af: fromsej

Sådan fjerner du virus og malware

Udviklingen går stærkt på "skidt"fronten, så vi har sammensat en ny og effektiv programpakke til fjernelse af det.
Virus  |  Læs »

Log ind

   

   

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Gør dig selv en tjeneste: Køb et ordentligt SD-kort

Der kan være meget stor hastighedsforskel på to umiddelbare ens SD-kort. Se her hvad du skal være opmærksom på, når du køber ekstra hukommelse til din mobil, tablet eller kamera.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Gratis flysimulator fra Microsoft

Den legendariske Flight Simulator fra Microsoft genopstår den 29. februar - og denne gang er spillet gratis.


Nyheder fra Computerworld

Teaser billede

Bank: Derfor er login uden NemID helt i orden

Der er ikke hold i påstanden om sikkerhedsproblemer i forbindelse med bankkunders login uden brug af NemID, lyder det fra Nykredit Bank.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger