Avatar billede frostware Nybegynder
12. april 2004 - 19:19 Der er 10 kommentarer og
1 løsning

Avanceret besøgstæller

Hej

Jeg har brug for en avanceret besøgstæller, som kan vise antal besøgende i dag og antal bruger som er online. Jeg fatter ikke rigtig MySQL, så hvis du har en anden måde at lave en sådan tæller på, hører jeg gerne fra dig.

Jeg har lavet en som registrere antal besøgende i alt. Den går ned i en log fil, og henter antallet. Her er scriptet:

<?php
$ip = getenv("REMOTE_ADDR");
$fil = "count.txt";
$f = file($fil);
$antal = count($f);
$yest = time() - 1800;
$o = "0";
$xidag = "f";
$idag = time();
$idag2 = date("Y F d, H:i");
  while ($antal > $o) {
    $streg = explode(" ", $f[$o]);
      if ($ip == $streg[0]) {
      $x = "t";
        if ($streg[1] > $yest) {
          $xidag = "t";
        }
      }
    $o++;
  }
  if ($xidag == "f") {
    $logg = fopen("$fil", "a");
    fputs ($logg, "$ip $idag, $idag2\n");

    fclose ($logg);
  }
?>

Noget i samme stil ville være rart, eller en udbygning af scriptet.

mvh
frostware
Avatar billede dennismp Nybegynder
12. april 2004 - 20:28 #1
Hvis jeg reloader samme side to gange, er det så to hits der skal tælles?
Avatar billede frostware Nybegynder
12. april 2004 - 20:52 #2
antal brugere i dag, skal på samme måde som scriptet ovenover, kun registrere igen når der er gået 1800sekunder.

antal brugere online, skal registrere igen efter 10min
Avatar billede dennismp Nybegynder
12. april 2004 - 23:48 #3
Kigger på det imorgen.
Avatar billede dennismp Nybegynder
13. april 2004 - 22:50 #4
Prøv denne
http://dennis.moellegaard.dk/v4/php/simplecounter.php?source=2

updateHits(); skal kaldes på alle sider.
resten skal kaldes efter behov.
Jeg har lavet det forholdsvis simpelt (dels er der ikke brug for den store løsning, dels kan det være du kan lære lidt af det). Hvis der sker fejl, vil det ske i stilhed (de fleste laver jo flere hits, og det er jo ikke en primær funktion på din hjemmeside (tror jeg :) ).

Var det, hvad du ønskede?
Avatar billede thedeathart Nybegynder
13. april 2004 - 22:53 #5
jeg vil nok sætte counterens time til 60*60*24 = 86400 ...
så logger den kun 1 count om dagen...
Avatar billede dennismp Nybegynder
13. april 2004 - 23:00 #6
Mja, frostware kan kigge nærmere på
$sql = "UPDATE hit SET lasthit=NOW() WHERE ip='$ip' AND date_add(lasthit, INTERVAL 30 MINUTE) > NOW()";

og skrive "1 DAY" istedet for "30 MINUTE" - eller hvad der nu ønskes. Men 1 døgn vil jeg da mene er lidt i overkanten, men det er nemt at ændre.
Avatar billede frostware Nybegynder
14. april 2004 - 07:35 #7
indtil videre takker jeg, men jeg får først tid til at afprøve det i løbet af nogle dage...men så vanker der også point! (hvis det virker)
Avatar billede frostware Nybegynder
14. april 2004 - 07:42 #8
altså selve den lange kode indsættes på den side som skal vise tallene, ikke?

og så skal updateHits kaldes på alle de sidder som skal indgå, i statistikken. Hvordan kalder man den???
Avatar billede dennismp Nybegynder
14. april 2004 - 09:31 #9
Tag filen og slet:

Så er det nok at du inkluderer den på dine sider (efter du har oprettet en forbindelse til databasen med mysql_connect / mysql_pconnect).

Når du skal vise tallene, skriver du bare:
print "Online Users: " . getOnlineUsers() . "<br>";
print "Visits today: " . getVisitsToday() . "<br>";

på siden.
Avatar billede frostware Nybegynder
14. april 2004 - 15:41 #10
den der db.php fil som der bliver referet til i koden, skal den være tom eller skal der stå noget i den?
Avatar billede dennismp Nybegynder
14. april 2004 - 17:37 #11
Det er bare for at få den til at virke hos mig. Den indeholder bare koden der connecter til databasen.
altså:
mysql_connect(..);
mysql_select_db(...);

Hvis du gør dette et andet sted / på en anden måde, så kan du fjerne linjen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester