Avatar billede thenegotiator Nybegynder
03. januar 2004 - 23:49 Der er 15 kommentarer og
1 løsning

En counter til mit site

Jeg kunne godt tænke mig en komplet kode til min counter. Counteren skal kunne vise hvor mange der er online i øjeblikket, og hvor mange der har været på ialt. jeg kunne forstille mig at denne her samtidig loggede ip og hostname.

counter bliver enten skrevet i en til (txt), eller i mySQL. men mySQL ved jeg ikke helt, hvordan sådan en virker... søger hjælp........

på forhånd tak !!
Avatar billede thorus Nybegynder
04. januar 2004 - 00:06 #1
nået ligene -> http://www.phpuniverset.dk/show_source.phtml?script_id=8

Du kan bruge den sidste satte row i mysql til at se hvor mange som har været online.
Avatar billede exp Juniormester
04. januar 2004 - 00:10 #2
www.zipstat.dk er god (men den hoster du ikke selv)

eller
google.com => phpstats
Avatar billede ahv Nybegynder
04. januar 2004 - 00:11 #3
En meget simpel tæller, der først tæller brugeren igen når der minimum er gået 24 timer, online tælleren er også meget simpel.

<?php
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");
$ip = $_SERVER['REMOTE_ADDR'];

// Online tæller
$tid = date("Y-m-d H:i:s", (time()-60*10));
mysql_query("DELETE FROM online WHERE tid < '$tid'");
$tjek = mysql_query("SELECT * FROM online WHERE ip='$ip'") or die(mysql_error());
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<br>";

// Antal unikke besøg, tæller pr. dag.
$besoeg_idag = mysql_query("SELECT * FROM besoeg WHERE ip='$ip' ORDER BY id DESC");
$row = mysql_fetch_array($besoeg_idag);
if ($row["tid"] < date("Y-m-d H:i:s", (time()-60*60*24))) {
    mysql_query("INSERT INTO besoeg (tid, ip) VALUES (now(),'$ip')");
}
$besoeg = mysql_query("SELECT COUNT(*) AS antal FROM besoeg");
echo "Der har været ".mysql_result($besoeg,0)." besøg";

mysql_close($connection);
?>

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

CREATE TABLE `besoeg` (
  `id` int(11) NOT NULL auto_increment,
  `tid` datetime NOT NULL default '0000-00-00 00:00:00',
  `ip` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Avatar billede ahv Nybegynder
04. januar 2004 - 00:11 #4
Desuden skulle min kode jeg lige har fixet heller ikke være så svær at udbygge.
Avatar billede thenegotiator Nybegynder
04. januar 2004 - 00:28 #5
ahv=>
det lyder meget interessant. er det muligt at du kan sende en komplet eksempel, til mig. jeg kender ikke mySQL (eller hvad det hedder), så jeg kunne tænke mig, at du samtidig ville skrive en kode, som der opretter tabellerne??? min mail er: smirnoff@mail.dk
Avatar billede ahv Nybegynder
04. januar 2004 - 10:04 #6
thenegotiator -> Alt er skrevet til dig, koden der opretter tabellerne er også skrevet:

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

CREATE TABLE `besoeg` (
  `id` int(11) NOT NULL auto_increment,
  `tid` datetime NOT NULL default '0000-00-00 00:00:00',
  `ip` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Avatar billede ahv Nybegynder
04. januar 2004 - 10:25 #7
Du opretter disse tabeller ved at gå ind i din MySQL database via PHPMyAdmin, så går du ind i din database ude til venstre, så går du op i SQL og indsætter de linier jeg skrev i mit forrige indlæg også tryk på go (udfør) Så er de oprettet.
Husk desuden at ændre følgnede linier:
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");
Avatar billede thenegotiator Nybegynder
04. januar 2004 - 14:34 #8
ahv=>
Du har været til en stor hjælp !!!!

lige et sidste spørgsmåL:
Hvis jeg nu skal se tabellerne (altså klokkeslet, og IP), skal jeg så se dem via min browser (altså et php dokument), kan du så skrive en kode til mig, hvor jeg kan se dem allesammen, og samtidtig slette alle registreringerne...????
Avatar billede thenegotiator Nybegynder
04. januar 2004 - 15:36 #9
ahv=>
Er det muligt at omkode kilde-koden, så den hele tiden viser, hvor mange der er online??? (altså, hvor den opdateres igen, når siden indlæses), som jeg faktisk ønskede..... ;)
Avatar billede thenegotiator Nybegynder
04. januar 2004 - 15:41 #10
nu virker online tæller :S
hvad mener du med de minimum 24 timer??
Avatar billede ahv Nybegynder
04. januar 2004 - 15:58 #11
Hvis du bliver registret nu, så kan du først blive registreret som besøgende igen om 24 timer.
Avatar billede ahv Nybegynder
04. januar 2004 - 15:59 #12
thenegotiator -> Det kan ikke betale sig at lave et php-dokument der spytter oplysningerne ud, PHPMyAdmin er meget bedre, her har du også en ordenlig beskyttelse.
Avatar billede thenegotiator Nybegynder
04. januar 2004 - 16:09 #13
ahv=>
jeg har oprettet tabellerne i PHPMyAdmin, som du har fortalt jeg skulle gøre, og brugt din kildekode, og den virker fint... :D
mit problem før var, at når en af mine kammerater forlod min web-side, stod han stadig som ONLINE...
Avatar billede ahv Nybegynder
04. januar 2004 - 16:19 #14
Det er fordi den venter 10 min med at smide folk af, da du jo ikke ved om de er længe om at læse siden eller bare lige er væk, du kan ændre itden her:

$tid = date("Y-m-d H:i:s", (time()-60*10));

Ændre 10 til det antal min du ønsker.
Avatar billede thenegotiator Nybegynder
04. januar 2004 - 16:28 #15
okay.. hehe.. takker.. jeg er ny til PHP, og MySQL som du nokk har fundet ud af... :D

var det muligt at du lige kunne spytte en kode ud af ærmet, som der virker registreringerne i besøgte?? med id, klokkeslet, og IP, så ville det fandme være iorden :D
Avatar billede thenegotiator Nybegynder
04. januar 2004 - 16:30 #16
desuden, hvis jeg sætter $tid til fx. 5 min, og besøgende bladre rundt, og indlæser koden flere gange, så bliver tiden vel bare opdateret???
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