Avatar billede emureactor Nybegynder
10. maj 2003 - 17:27 Der er 32 kommentarer og
1 løsning

Counter der tæller unikke besøgende i MySQL

Jeg skal simpelthen bare bruge en counter der tæller unikke besøgende, den skal "re-sette" hver 24 time og være lavet af en blanding mellem cookies og mysql, dvs. at den lægger en cookie hos brugeren + den logger IP'en i database så der kommer en slags "dobbelsikring"

Jeg skal bare have en færdig løsning da jeg ikke mener det er det sværeste at lave - jeg kan ikke :D

Tak !
Avatar billede erikjacobsen Ekspert
10. maj 2003 - 17:36 #1
Hvordan "dobbeltsikring"? Skal en cookie afgøre om det er samme
besøgende, eller skal IP-en? Hvad hvis der er flere personer bag samme
IP? Eller hvis en person skifter IP?
Avatar billede martinbk Nybegynder
10. maj 2003 - 17:43 #2
en cookie med en expire på 24 timer må da så absolut værre sikkerhed nok, med mindre folk ligefrem sletter deres cookies, som de færeste jo entlig gør
Avatar billede erikjacobsen Ekspert
10. maj 2003 - 17:48 #3
Vi er jo nogen, der konsekvent nægter cookies adgang :))
Avatar billede emureactor Nybegynder
10. maj 2003 - 18:00 #4
ok ok - rolig nu, hvad ville I anbefale ? cookie eller IP baseret?
Avatar billede erikjacobsen Ekspert
10. maj 2003 - 18:01 #5
Ingen af delene dur til noget - det er derfor du skal vortælle
os hvad du vil have.
Avatar billede Slettet bruger
10. maj 2003 - 18:05 #6
emureactor >> Kunne mulighederne i www.stattt.dk være noget for dig?
Avatar billede emureactor Nybegynder
10. maj 2003 - 18:10 #7
regin >> ellers tak men det skal KUN kunne det ovennævnte da jeg helst vil holde tingene adskilt lige p.t, og det skal være noget som brugeren kan se på min side
Avatar billede emureactor Nybegynder
10. maj 2003 - 18:13 #8
ok her er hvad den skal kunne:

- Tælle UNIKKE brugere - jeg er sådan set ligeglad hvordan den gør, bare den ikke tæller "hits".
- Re-sette sig selv hver 24 timer så brugeren derfor tæller med i stat igen, dermed IKKE sagt at det samlede antal visitors skal slettes, det skal fortsætte i det uendelige
- Brugerene på min side skal se en tekst hvori der står hvor mange brugere der har været, noget ala "Total of xxxx visitors" men jeg er tilfreds bare den viser tallet...

Jeg er sådan set ligeglad med hvordan og hvorfor den blir lavet som den gør, bare den virker...tak !
Avatar billede Slettet bruger
10. maj 2003 - 18:25 #9
Prøv med følgende...
<?php

/*
Opret følgende sql-tabel
CREATE TABLE tabel (
  ip varchar(255) NOT NULL default '',
  time int(10) unsigned NOT NULL default '0',
  UNIQUE KEY ip (ip)
) TYPE=MyISAM;
*/

//Er connected til databasen i forvejen!
function statistic()
{
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = time();
    $sql = "INSERT into tabel (ip,time) VALUES ('$ip','$time')";
    $result = mysql_query($sql);
    if(!$result)
    {
        $sql = "update tabel set time='$time' where ip='$ip'";
        mysql_query($sql);
    }
    $h24 = $time - 3600*24;//24 timer
    $sql = "SELECT count(ip) FROM tabel where time>$h24";
    $result = mysql_query($sql);
    $hits = mysql_result($result,0);
    return $hits;
}

echo statistic();
?>
Avatar billede erikjacobsen Ekspert
10. maj 2003 - 18:43 #10
Der er ingen mulighed for på serversiden at tælle "unikke" besøgende.
Uanset hvad du vælger, vil den kunne tælle for mange eller for få.
Det plejer vel ikke at være noget problem, når du ved det. Du har så
blot et ca. tal.
Avatar billede Slettet bruger
10. maj 2003 - 18:47 #11
Ovenstående vil f.eks. tælle samtlige søgerobotter som kommer forbi din side.
Og alle de folk som sidder bag en proxyserver vil kun blive talt som en... det er antallet af unikke IP'er som bliver talt...
Avatar billede emureactor Nybegynder
10. maj 2003 - 22:57 #12
regin hvad mener du med "er connected til databasen i forvejen" skal jeg lave en config hvor jeg connecter til den? eller hvordan?
Avatar billede Slettet bruger
10. maj 2003 - 23:44 #13
Ja... koden ovenover smider du ind på alle de sider som kører i php...
Der går jeg udfra at du automatisk laver et connect til databasen... ellers så laver du bare en config-fil til det!
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:06 #14
ok...jeg prøver at se på det :D
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:16 #15
hmm kan du ikke skrive det færdige script...jeg kan sgu ikke få det til at virke
Avatar billede Slettet bruger
11. maj 2003 - 00:19 #16
Det er det færdige script... hvor ligger problemet?
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:22 #17
jeg kan ikke connecte til db'en

den skriver Warning: mysql_result(): supplied argument is not a valid MySQL result resource in bla/min/sti/til.php
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:23 #18
hey...nu virker den vist
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:23 #19
to sek !
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:25 #20
den virker !!! så er det bare lige om den resetter efter 24 timer :D
Avatar billede Slettet bruger
11. maj 2003 - 00:26 #21
Den resetter ikke... den tæller bare antallet af ip'er de sidste 24 timer....
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:26 #22
nå ja !! men så sletter den vel den række med IP efter 24 timer ?
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:27 #23
men hmm...er det hver unikke den resetter eller er det ALLE ip der blir slettet fra db'en på en gang
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:28 #24
sidste spm. hvis min mysql server er nede - hvad gør den så?
Avatar billede Slettet bruger
11. maj 2003 - 00:29 #25
Indsæt dette nederst i function statistic():
$sql = "delete from tabel where time<$h24";
mysql_query($sql);

Så sletter den alle ip'er som ikke har besøgt nogen af dine sider i de sidste 24 timer....
Avatar billede Slettet bruger
11. maj 2003 - 00:29 #26
Så kommer der en masse fejloutput og den giver ikke en skid.... :(
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:32 #27
og hvad kan man gøre ved det?
Avatar billede Slettet bruger
11. maj 2003 - 00:34 #28
Sæt et @ foran alle funktioner som starter med "mysql"
så kommer der ingen fejlmeddelelser fra den....
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:34 #29
men altså den sletter ikke det SAMLEDE antal visitors vel ? den sletter kun selve IP'en hos brugeren så den kan tælle op 2 gange i løbet af fx 48 timer, det samlede antal blir ved med at stige uden at resettes ikke?
Avatar billede Slettet bruger
11. maj 2003 - 00:36 #30
$sql = "delete from tabel where time<$h24";
mysql_query($sql);
----------------------
Med denne kode vil der kun være registreret brugere for de sidste 24 timer...
Men "resettet" har kun betydning for tabellens størrelse.
Du kan lade det stå eller fjerne det.... outputtet fra din statistic(); vil være det samme.
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:37 #31
ok - jamen så sir jeg mange tak !!!
Avatar billede emureactor Nybegynder
11. maj 2003 - 00:37 #32
hvis du vil skide et svar i spm !! så skal jeg håndlange dig nogle point
Avatar billede Slettet bruger
11. maj 2003 - 00:37 #33
Ok... jeg lægger lige et svar... :P
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