Avatar billede nak-m Nybegynder
26. juni 2003 - 21:19 Der er 92 kommentarer og
2 løsninger

mysql IP counter

Nogen der kan komme med et enkelt eksempel på en counter der tæller hvor mange forskellige IP'er der har besøgt siden (ved at gemme IP'en i en mysqldatabase eller noget)
Avatar billede ahv Nybegynder
26. juni 2003 - 21:20 #1
<?php
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");
$ip = getenv(REMOTE_ADDR);
$tid = date("Y-m-d H:i:s", (time()-600));
mysql_query("DELETE FROM online WHERE tid < '$tid'");
$tjek = mysql_query("SELECT * FROM online WHERE ip='$ip'");
if(mysql_num_rows($tjek) == 0) {
    mysql_query("INSERT INTO online (tid, ip) VALUES (now(),'$ip')");
} else {
    mysql_query("UPDATE online SET tid=now() WHERE ip='$ip'");
}
$online = mysql_query("SELECT COUNT(*) AS antal FROM online");
echo "Der er lige nu ".mysql_result($online,0)." online";
mysql_close($connection);
?>
Avatar billede bryrup Nybegynder
26. juni 2003 - 21:21 #2
Avatar billede ahv Nybegynder
26. juni 2003 - 21:21 #3
Sådan her. Det andet var online ->

<?php
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");
$ip = getenv(REMOTE_ADDR);
$tjek = mysql_query("SELECT * FROM online WHERE ip='$ip'");
if(mysql_num_rows($tjek) == 0) {
    mysql_query("INSERT INTO online (tid, ip) VALUES (now(),'$ip')");
}
$online = mysql_query("SELECT COUNT(*) AS antal FROM online");
echo "Besøgende ".mysql_result($online,0);
mysql_close($connection);
?>
Avatar billede nak-m Nybegynder
26. juni 2003 - 21:26 #4
hvad gør jeg så med scriptet? :D
Avatar billede ahv Nybegynder
26. juni 2003 - 21:29 #5
Sætter det ind i et php-dokument, retter mysql oplsyningerne opretter en tabel i mysql databasen med tre felter ->

id -> int -> auto_increment
tid -> datetime
ip -> varchar -> 20
Avatar billede nak-m Nybegynder
26. juni 2003 - 21:30 #6
har aldrig prøvet at lave noget i mysql før - hvordan?
Avatar billede ahv Nybegynder
26. juni 2003 - 21:31 #7
Følgende opretter du via PHPMyAdmin ->

CREATE TABLE `online` (
`id` INT NOT NULL AUTO_INCREMENT ,
`tid` DATETIME NOT NULL ,
`ip` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

udfylder mysql oplsyninger i det script jeg gav dig og uplaoder.
Avatar billede nak-m Nybegynder
26. juni 2003 - 21:35 #8
udfylder informationer? hvor?
Avatar billede ahv Nybegynder
26. juni 2003 - 21:36 #9
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");
Avatar billede nak-m Nybegynder
26. juni 2003 - 21:43 #10
altså skal jeg udfylde host user og pass med hvad? :)
og database er navnet på databasen eller hva?

havde forresten lige kommet til at afinstallere mysql så jeg er lige nødt til at installere det ;P
Avatar billede ahv Nybegynder
26. juni 2003 - 21:45 #11
Det skal du erstatte med dine MySQL oplysninger.
Avatar billede nak-m Nybegynder
26. juni 2003 - 21:50 #12
ok :(
Avatar billede detox Nybegynder
26. juni 2003 - 21:50 #13
Jeg har lige læst en artikel som beskriver en anden måde at gøre det på.
Nemlig at tælle antallet af sessionfiler, i stedet for at bruge database.
Det er både hurtigere og så behøver man ikke stresse databasen ved mange besøg.
Det tager kun 7/10 af et millisekond at udføre.
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:08 #14
kan du fortælle hvad dette "sessionfilfænomen" er for noget? har hørt begreget session før :)
Avatar billede ahv Nybegynder
26. juni 2003 - 22:11 #15
detox -> Den skal tælle antal ip'er der har besøgt siden sessionfiler bliver jo ikke ved med at lægge på serveren, de kan sikekrt bruges til at tælle antal online, men ikke besøg ialt?
Avatar billede detox Nybegynder
26. juni 2003 - 22:12 #16
Hvis du ligger: session_start(); øverst i dine filer starter der en session for hver ny bruger. Du kan så ganske enkelt tælle sessionsfilerne, hver gang siden reloader.
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:16 #17
hvis det dur(?) hvordan gør man så?
(og hvad er det session for noget?
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:21 #18
er i der?
Avatar billede ahv Nybegynder
26. juni 2003 - 22:24 #19
Tror dtadig på der er flere muligheder i mit script, det kunne udvides så den talte alle der besøgt siden, dvs antal side visninger, så kunne vi lave en gruop by på ip'erne så vi kunne se unikke besøgende, eftersom vi også har tiden på dem kan vi se hvor mange der har være der en bestemt dag, en måned eller hvad vi nu vil.
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:29 #20
counteren skal bare bruges til at vise totalantal besøgende :)

kan en af jer fortælle hvordan man laver sessionstingen (hvis det altså dur?)
Avatar billede detox Nybegynder
26. juni 2003 - 22:32 #21
Ja, jeg tror metoden med sessions er mest velegnet hvis man har mange besøgende og godt vil reservere databasen til andet brug. Men tjek det ud:
<?
session_start();

define("MAX_IDLE_TIME", 3);

function getOnlineUsers() {
    if ($directory_handle = opendir(session_save_path())) {
    $count = 0;
    while (false !== ($file = readdir($directory_handle))) {
        if ($file != '.' && $file != '..') {
            if (time() - fileatime(session_save_path() . '\\' . $file) < MAX_IDLE_TIME * 60) {
                $count++;
                }
            }
        }
        closedir($directory_handle);
        return ($count);
    } else {
    return false;
}
}
echo 'Number of online users: ' . getOnlineUsers() . '<br>';
?>
Avatar billede detox Nybegynder
26. juni 2003 - 22:36 #22
ahv -> Du har fuldstændigt ret i det ikke giver mulighed for en mere detaljeret statistik og andre finesser, men det udmærker sig ved sin hurtighed.
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:37 #23
hvis jeg satte det ind på min side nu ville det så du uden videre arbejde?
Avatar billede detox Nybegynder
26. juni 2003 - 22:38 #24
nak-m -> og så skal du bemærke at den ikke tæller total antal besøg, men udelukkende aktuelle online users.
Avatar billede detox Nybegynder
26. juni 2003 - 22:39 #25
Det var vidst ikke helt det du efterlyste, så go for ahv's løsning.
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:42 #26
satans :) så skal jeg til at "fiddle" med det mysql
Avatar billede detox Nybegynder
26. juni 2003 - 22:43 #27
Ja c",)
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:44 #28
men tak alligevel (kunne måske være sjovt at bruge på siden) - hvis jeg satte det ind på min side nu ville det så du uden videre arbejde?
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:49 #29
ahv: det er umuligt for mig at få det satans mysql til at virke ... bliver databaserne gemt som filer? i så fald kan du så ikke bare sende databasen til mig? hvis ikke så ved jeg sq ik hvad jeg skal gøre :)
Avatar billede detox Nybegynder
26. juni 2003 - 22:52 #30
Den skulle bare fungere som den er ja.
Avatar billede detox Nybegynder
26. juni 2003 - 22:54 #31
Når du skal lave tabellen i databasen, kan du bare kopiere det ahv har skrever ind i phpmyadmin SQL og trykke udfør.
Avatar billede nak-m Nybegynder
26. juni 2003 - 22:57 #32
når jeg går ind på phpadmin kan jeg ikke se noget sted at lave databaser - hvor?
Avatar billede detox Nybegynder
26. juni 2003 - 23:02 #33
ok, jeg kan fornemme du ikke har så meget erfaring i mysql.
Hvis du ikke har en database, kan du lave en på phpmyadmins første side står der "Opret ny database" så skal du bare vælge et navn og trykke udfør.
Avatar billede detox Nybegynder
26. juni 2003 - 23:03 #34
men er det ikke din egen server har du måske ikke rettigheder til at oprette nye databaser.
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:06 #35
der står intet i den stil på den første side ved mig...det eneste man kan er at vælge sprog! :(
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:07 #36
jeg kører bare localhost lige nu :)
Avatar billede detox Nybegynder
26. juni 2003 - 23:07 #37
Er det din egen server?
Avatar billede detox Nybegynder
26. juni 2003 - 23:10 #38
Kan du finde en fane der hedder SQL?
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:11 #39
ja mens jeg tester :) ...bare min pc
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:14 #40
hvorhenne skulle den fane være?
Avatar billede exp Juniormester
26. juni 2003 - 23:16 #41
detox >>
Den artikel med sessionsfiler, ligger den online? Og i bekræftende fald, hvor?
Avatar billede detox Nybegynder
26. juni 2003 - 23:17 #42
Hvis du ser i det smalle vindue i venstre side står der så ikke et navn eller noget du kan trykke på?
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:18 #43
jo der står:

Hjem
test (-)

:)
Avatar billede detox Nybegynder
26. juni 2003 - 23:24 #44
ok test er en database tryk på navnet, så skulle der gerne dukke en ny side op med faner på.
Avatar billede detox Nybegynder
26. juni 2003 - 23:25 #45
Forstår bare ikke du ikke kan oprette databaser. Prøv at se på min:
http://sveegaard.h4f.dk/img/phpmyadmin.gif
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:25 #46
det var satans:

Action canceled
Internet Explorer was unable to link to the Web page you requested. The page might be temporarily unavailable.
Avatar billede detox Nybegynder
26. juni 2003 - 23:27 #47
exp -> Jo, det gør den. Jeg skal prøve om jeg kan finde den.
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:28 #48
jeg kan også kan se højre kolonne i den store frame (altså "phpMyAdmin")

har jeg sat noget forkert op? eller glemt at sætte noget op?
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:28 #49
jeg kan også kan = jeg kan også kun
Avatar billede detox Nybegynder
26. juni 2003 - 23:30 #50
Avatar billede detox Nybegynder
26. juni 2003 - 23:31 #51
Ja, det lyder forkert. Selvom jeg skal ikke kunne sige det, hvis det er en ældre version.
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:33 #52
det er version2.3.0 :(
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:36 #53
hvad skal man huske at gøre når man lige har unzippet phpmyadmin? har ikke rigtig gjort noget...
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:40 #54
er du der?
Avatar billede detox Nybegynder
26. juni 2003 - 23:40 #55
Læse manualen :-)
Jeg kan ikke helt huske det, men der er et par ting man skal rette i config.inc.php og så er manualen din ven.
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:45 #56
nu har jeg ikke adgang pga. password :)
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:48 #57
hvor skal man skrive password henne? kan vel ikke passe den bare lukker en ude?
Avatar billede detox Nybegynder
26. juni 2003 - 23:53 #58
Der er et par steder i config.inc.php der er vigtige. 2 sec.
Avatar billede nak-m Nybegynder
26. juni 2003 - 23:54 #59
ok :o)
Avatar billede detox Nybegynder
26. juni 2003 - 23:55 #60
Prøv at sætte dem sådan, så kan du lave password bagefter:
$cfg['Servers'][$i]['host']          = 'localhost';
$cfg['Servers'][$i]['auth_type']    = 'config';
$cfg['Servers'][$i]['user']          = 'root';
$cfg['Servers'][$i]['password']      = '';
Avatar billede nak-m Nybegynder
27. juni 2003 - 00:00 #61
så nu dur det vist :D haha!!!
Avatar billede detox Nybegynder
27. juni 2003 - 00:04 #62
Ok, så held & lykke med det! Jeg bliver nødt til at ramme kassen, skal tidligt op i morgen c",)
Avatar billede nak-m Nybegynder
27. juni 2003 - 00:06 #63
argh får Action canceled når jeg prøver at oprette en database :(
og den gider heller ikke åbne databaserne ... det ser ud til at den kører min ip i stedet for localhost i linkene - hvor kan jeg have fået den til at gøre det henne?
Avatar billede nak-m Nybegynder
27. juni 2003 - 00:07 #64
satans :)
Avatar billede nak-m Nybegynder
27. juni 2003 - 00:16 #65
jaaa ordnede det :)
prøver at lave den database som du nævnte :)
Avatar billede nak-m Nybegynder
27. juni 2003 - 00:19 #66
jeg gik ind under SQL-fanen og skrev:

CREATE TABLE `online` (
`id` INT NOT NULL AUTO_INCREMENT ,
`tid` DATETIME NOT NULL ,
`ip` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

som forspørgsel ... er det rigtigt?
Avatar billede nak-m Nybegynder
27. juni 2003 - 00:26 #67
ha det ser sq ud til at virke ... besøgende 1 :)

men hvordan kan jeg teste med andre folk ... skal jeg lave localhost om til ip?
Avatar billede nak-m Nybegynder
27. juni 2003 - 10:36 #68
prøver med min ip nu - men den gidder ikke connecte til mysql mere..?
Avatar billede nak-m Nybegynder
27. juni 2003 - 21:08 #69
kom tilbaaaage
Avatar billede detox Nybegynder
27. juni 2003 - 21:19 #70
Kører serveren, eller har du ændret noget?
Avatar billede nak-m Nybegynder
28. juni 2003 - 01:45 #71
serveren kører fint, den siger bare:

Can't connect to MySQL server on 'ipadresse' (10060)
Avatar billede nak-m Nybegynder
04. juli 2003 - 15:35 #72
men det er også ligegyldigt - det er alligevel ikke min server der skal kører det :)

men med hensyn til onlinescriptet så har jeg måske et problem ... den opdaterer jo kun antallet når man opdaterer siden - og min side opdateres aldrig (med mindre man trykker opdatér) :)

kan man gøre noget ved det problem?
Avatar billede nak-m Nybegynder
04. juli 2003 - 15:47 #73
og hvordan laver jeg et script der viser hvor mange der har været denne dag?
Avatar billede detox Nybegynder
04. juli 2003 - 15:58 #74
Ja, det kræver jo en opdatering, da det kører serverside. Du kan evt. sætte den til at auto-refreshe med et eller andet interval.
Avatar billede detox Nybegynder
04. juli 2003 - 16:12 #75
Hvor langt er du egentlig nået? Har du fået det til at køre med et php/mysql script og hvordan ser databasen evt ud?
Avatar billede nak-m Nybegynder
05. juli 2003 - 22:15 #76
jeg har fået besøgstælleren til at du (tror jeg nok)

men jeg kan ikke få onlinetælleren til at du - den viser ingenting (burde den ikke vise at jeg er online?)

og siden skal som sagt ikke opdatere med mindre man trykker på opdater ... er der ikke en måde at få den til at opdatere kun onlinenummeret?
Avatar billede nak-m Nybegynder
05. juli 2003 - 22:17 #77
kan man egentlig ikke også få besøgstælleren til at vise hvor mange besøgende der har været den pågældende dag?
Avatar billede detox Nybegynder
05. juli 2003 - 22:24 #78
Jo, jeg skulle da mene at du tæller med som online. Jeg bliver lidt i tvivl om hvad der er onlinetæller og hvad der er besøgstæller, men den funktion ahv postede kan uden videre udvides til at vise antal besøgende den aktuelle dag.
Hvorimod den jeg postede ikke sådan uden videre vil egne sig til det formål.
Avatar billede nak-m Nybegynder
05. juli 2003 - 22:37 #79
hvordan får jeg den til at vise hvor mange der har været der den foreliggende dag?

ahv: besøgstæller
dig: onlinetæller
Avatar billede detox Nybegynder
05. juli 2003 - 22:56 #80
Du kan prøve med den her forespørgsel der tager de sidste 24 timer:
SELECT COUNT(
DISTINCT ip ) AS antal
FROM test
WHERE ( NOW() - tid ) < ( 60 * 60 * 24 )
Avatar billede detox Nybegynder
05. juli 2003 - 23:27 #81
Hvis det skal være fra den aktuelle dato så prøv med:
SELECT COUNT( DISTINCT ip ) AS antal
FROM  online
WHERE LEFT( tid, 10  )  = CURRENT_DATE
Avatar billede nak-m Nybegynder
05. juli 2003 - 23:57 #82
hvad skal jeg gøre med koden?
Avatar billede detox Nybegynder
06. juli 2003 - 00:11 #83
Indsæt den i en php-fil, sådan her:
<?php
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");
$res = mysql_query("SELECT COUNT( DISTINCT id ) AS antal
FROM  online
WHERE LEFT( tid, 10 ) = CURRENT_DATE") or die("Noget gik galt " . mysql_error);
echo "Antal online i dag: " . mysql_result($res,0,0);
?>
Avatar billede detox Nybegynder
06. juli 2003 - 00:13 #84
Hvor du selvfølgelig skal rette "host", "user", "pass" og "database" til dine egne værdier. Og evt. osse "online", hvis du kalder din tabel noget andet.
Avatar billede nak-m Nybegynder
07. juli 2003 - 00:58 #85
den skriver 0 når jeg bruger koden tæller den ikke mig med?
Avatar billede detox Nybegynder
07. juli 2003 - 01:17 #86
Hvad taler vi nu om? Bliver lidt i tvivl, da der jo er flere funktioner. Men JO du burde da tælle med i begge tilfælde!
Avatar billede detox Nybegynder
07. juli 2003 - 01:21 #87
Hvilket styresystem bruger du?
Avatar billede nak-m Nybegynder
07. juli 2003 - 01:44 #88
vi taler om dagstælleren :)

bruger winxp
Avatar billede detox Nybegynder
07. juli 2003 - 02:46 #89
Ok, dagstælleren???
Anyway, hvis der er noget der ikke fungerer, så må du nok præcisere det lidt nærmere. c",)
Avatar billede nak-m Nybegynder
07. juli 2003 - 04:26 #90
ok altså dagstælleren som du lige har givet mig koden til - altså den der tæller hvor mange besøgende der har været den pågældende dag :)
Avatar billede detox Nybegynder
07. juli 2003 - 05:49 #91
Hvis du har fulgt ahv's anvisninger i hans 2. og 4. indlæg og fået det til at virke. Burde dette osse virke, det gør det da hos mig.
-----------------------------------------------------
$res = mysql_query("SELECT COUNT( DISTINCT ip ) AS antal
FROM  online
WHERE LEFT( tid, 10 ) = CURRENT_DATE") or die("Noget gik galt " . mysql_error);
echo "Antal online i dag: " . mysql_result($res,0,0);
------------------------------------------------------
Faktisk kan du nøjes med:
-------------------------
$res = mysql_query("SELECT COUNT(*) AS antal
FROM online WHERE LEFT( tid, 10 ) = CURRENT_DATE")
    or die("Noget gik galt " . mysql_error);
echo "Antal online i dag: " . mysql_result($res,0);
--------------------------
Da ahv's script sikrer at der ikke er to ens ip-adresser i databasen.
Avatar billede nak-m Nybegynder
21. juli 2003 - 22:23 #92
jaa har fået det til at dú nu! :)
Avatar billede nak-m Nybegynder
21. juli 2003 - 22:24 #93
hvordan skal jeg give point? vil i dele dem? svar detox! :)
Avatar billede detox Nybegynder
21. juli 2003 - 22:47 #94
ok c",)
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